我对spark语言和pyspark. 我有一个pyspark.sql.dataframe.DataFrame如下所示:df.show()+--------------------+----+----+---------+----------+---------+----------+---------+| ID|Code|bool| lat| lon| v1| v2| v3|+--------------------+----+----+---------+----------+---------+----------+---------+|5ac52674ffff34c98...|IDFA| 1|42.377167| -71.06994|17.422535|1525319638|36.853622||5ac52674ffff34c98...|IDFA| 1| 42.37747|-71.069824|17.683573|1525319639|36.853622||5ac52674ffff34c98...|IDFA| 1| 42.37757| -71.06942|22.287935|1525319640|36.853622||5ac52674ffff34c98...|IDFA| 1| 42.37761| -71.06943|19.110023|1525319641|36.853622||5ac52674ffff34c98...|IDFA| 1|42.377243| -71.06952|18.904774|1525319642|36.853622||5ac52674ffff34c98...|IDFA| 1|42.378254| -71.06948|20.772903|1525319643|36.853622||5ac52674ffff34c98...|IDFA| 1| 42.37801| -71.06983|18.084948|1525319644|36.853622||5ac52674ffff34c98...|IDFA| 1|42.378693| -71.07033| 15.64326|1525319645|36.853622||5ac52674ffff34c98...|IDFA| 1|42.378723|-71.070335|21.093477|1525319646|36.853622||5ac52674ffff34c98...|IDFA| 1| 42.37868| -71.07034|21.851894|1525319647|36.853622||5ac52674ffff34c98...|IDFA| 1|42.378716| -71.07029|20.583202|1525319648|36.853622||5ac52674ffff34c98...|IDFA| 1| 42.37872| -71.07067|19.738768|1525319649|36.853622|+--------------------+----+----+---------+----------+---------+----------+---------+only showing top 20 rows我想在循环中提取每个唯一用户的信息,并将其转换为熊猫数据框。对于第一个用户,这就是我想要的:id0 = df.first().IDtmpDF = df.filter((fs.col('ID')==id0))它可以工作,但是将其转换为熊猫数据框需要很长时间tmpDF = tmpDF.toPandas()
2 回答
慕容708150
TA贡献1831条经验 获得超4个赞
你可以通过使用将 spark df 转换为 pandastoPandas()
unique_df = df.select('ID').distinct()
unique_pandas_df = unique_df.toPandas()
慕雪6442864
TA贡献1812条经验 获得超5个赞
以下是您正在寻找的内容,df.select("ID").distinct().rdd.flatMap(lambda x: x).collect()为您提供了一个独特的列表ID,您可以使用它来创建filterspark 数据框,toPandas()并可用于将 spark 数据框转换为 pandas 数据框。
for i in df.select("ID").distinct().rdd.flatMap(lambda x: x).collect():
tmp_df = df.filter(df.ID == i)
user_pd_df = tmp_df.toPandas()
更新:由于问题已被编辑
toPandas()导致将 DataFrame 中的所有记录收集到驱动程序,并且应该在数据的一小部分上完成。如果您尝试将巨大的 DataFrame 转换为 pandas,则需要花费大量时间。
添加回答
举报
0/150
提交
取消
