为了账号安全,请及时绑定邮箱和手机立即绑定

Pyspark:如何从 pyspark.sql.dataframe.DataFrame

Pyspark:如何从 pyspark.sql.dataframe.DataFrame

杨__羊羊 2022-07-12 18:30:43
我对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()


查看完整回答
反对 回复 2022-07-12
?
慕雪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,则需要花费大量时间。


查看完整回答
反对 回复 2022-07-12
  • 2 回答
  • 0 关注
  • 192 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号