想要将 pandas df 代码转换为 pyspark df 代码? [复制]

Posted

技术标签:

【中文标题】想要将 pandas df 代码转换为 pyspark df 代码? [复制]【英文标题】:Want to Convert pandas df code to pyspark df code? [duplicate] 【发布时间】:2020-03-24 15:06:06 【问题描述】:

pandas df 代码是

Data = data[data['ObservationDate'] == max(data['ObservationDate'])].reset_index()
Data_world = Data.groupby(["ObservationDate"])["Confirmed","Active_case","Recovered","Deaths"].sum().reset_index()
Data_world

Dataframe 结构是这样的。

SNo     ObservationDate     Province/State  Country/Region  Last Update     Confirmed   Deaths  Recovered   Active_case
0   1   01/22/2020  Anhui   China   1/22/2020 17:00     1   0   0   1
1   2   01/22/2020  Beijing     China   1/22/2020 17:00     14  0   0   14
2   3   01/22/2020  Chongqing   China   1/22/2020 17:00     6   0   0   6
3   4   01/22/2020  Fujian  China   1/22/2020 17:00     1   0   0   1
4   5   01/22/2020  Gansu   China   1/22/2020 17:00     0   0   0   0

想要这样的输出

ObservationDate     Confirmed   Active_case     Recovered   Deaths
0   03/22/2020  335957  223441  97882   14634

如何过滤最大日期?

max_date =  df.select(max("ObservationDate")).first()
group_data = df.groupBy("ObservationDate")
group_data.agg('Confirmed':'sum', 'Deaths':'sum', 'Recovered':'sum', 'Active_case':'sum').show()

【问题讨论】:

到目前为止您尝试了什么,您的尝试出了什么问题? group_data = df.groupBy("ObservationDate") group_data.agg('Confirmed':'sum', 'Deaths':'sum', 'Recovered':'sum', 'Active_case' :'sum').show() 最好从业务案例而不是代码开始... 【参考方案1】:

我想这就是你想要的。你可以先collect你的max日期,然后在groupByaggregate.之前在filter中使用它

from pyspark.sql import functions as F
max_date=df.select(F.max("ObservationDate")).collect()[0][0]
df.filter(F.col("ObservationDate")==max_date)\
.groupBy("ObservationDate")\
.agg('Confirmed':'sum', 'Deaths':'sum', 'Recovered':'sum', 'Active_case':'sum')\
.show()

【讨论】:

以上是关于想要将 pandas df 代码转换为 pyspark df 代码? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 .str 和 .split 将 pandas 代码转换为 Pyspark

如何将字典转换为 Pandas df?

类型错误:将 BigQuery 转换为 pandas df 时的 from_arrays()

如何将Pandas DataFrame转换为类似字节的对象

将 datetime64[ns] 索引转换为日期 pandas 以进行比较

Pandas ValueError:只能将大小为1的数组转换为Python标量