首页 > 解决方案 > 如何对不同的熊猫列进行分组和求和

问题描述

我有一个数据框df,我想按列LetterFrom. 下面的例子df:

   Letter  Price From        RT      To   
0   A      4     2020-06-04  11  2020-06-05
1   B      12    2020-06-04  11  2020-06-05
2   A      20    2020-06-04  11  2020-06-05
3   A      5     2020-06-04  11  2020-06-05
4   B      89    2020-06-05  11  2020-06-06
5   A      56    2020-06-05  11  2020-06-06
6   B      1     2020-06-06  11  2020-06-07

在标准 SQL 中,我会编写一个查询来实现所需的结果。

SELECT 
 Letter,
 From,
 SUM(Price),
 MAX(RT)
FROM
  some.table
GROUP BY Letter,From

我尝试了以下方法,但没有奏效。

df.groupby(['Letter','From']).sum(['RT','To'])

标签: python-3.xpandas

解决方案


尝试这个:

df['From'] = pd.to_datetime(df['From'])
df['To'] = pd.to_datetime(df['To'])
df = df.groupby(by=['Letter', 'From'], as_index=False).agg({
    'Price': 'sum',
    'RT': 'max'
})
print(df)

  Letter       From  Price  RT
0      A 2020-06-04     29  11
1      A 2020-06-05     56  11
2      B 2020-06-04     12  11
3      B 2020-06-05     89  11
4      B 2020-06-06      1  11

推荐阅读