如何使用Pandas数据框中其他列的条件语句求和一列中的值?

时间:2019-04-05 15:23:26

标签: python python-3.x pandas dataframe pandas-groupby

我有一个包含5列和25552行的数据框。数据框结构如下:

mydf.head(4)

station       date         Lat    Lon       prcp
USC00397992   1998-10-01   44.26  -99.44    0.5
USC00397993   1998-10-01   44.01  -100.35   1.2
USC00397994   1998-10-01   45.65  -97.12    1.1
USC00397995   1998-10-01   43.90  -99.52    0.7

station列中有许多不同的站点,而date列中的日期范围是1998-10-01至1999-06-30。同样,每个不同的站点都有不同的纬度和经度。 prcp列记录了各个日期的降水量。现在,我想找到1999年5月1日至1999年5月7日每个prcp日期范围的station值的总和。我想要这样的输出:

station       Lat      Lon     sum_from_May1_to_May7
 USC00397992  44.26  -99.44       2.5 (for instance)
  .             .       .           .
  .             .       .           .

  .  

2 个答案:

答案 0 :(得分:1)

首先过滤数据框

df2 = df.loc[(df.date >= '1999-05-01') & (df.date <= '1999-05-07)]

然后直接

df2.groupby('station').prcp.sum()

如果您不想将不同的LatLon分组在一起,那么

df2.groupby(['station', 'Lat', 'Lon']).prcp.sum()

答案 1 :(得分:0)

如果您不想根据纬度分组:

df[(df['date']>pd.Timestamp(1995,5,1)) & (df['date']<pd.Timestamp(1995,5,7))]\
     .groupby('station').agg({'prcp':'sum', 'Lat' :'first', 'Lon' :'first'})