使用Pandas

时间:2016-07-21 04:24:24

标签: python-2.7 pandas

我有一个按2列分组的数据框 - 日期和客户端,我总结了这样的数量: new_df = df.groupby(['Date',Client'])

现在我得到以下df:

             Sum
Date Client 
1/1   A      0.8
      B      0.2
1/2   A      0.1
      B      0.9

我希望能够发现这样一个事实,即0.8到0.2的比率之间的波动很大,变为0.1到0.9。最有效的方法是什么?我尝试

时也无法访问日期和客户端字段
new_df[['Date','Client']]

为什么?

1 个答案:

答案 0 :(得分:1)

IIUC您可以使用pct_changediff

new_df = df.groupby(['Date','Client'], as_index=False).sum()
print (new_df)
  Date Client  Sum
0  1/1      A  0.8
1  1/1      B  0.2
2  1/2      A  0.1
3  1/2      B  0.9

new_df['pct_change'] = new_df.groupby('Date')['Sum'].pct_change()
new_df['diff'] = new_df.groupby('Date')['Sum'].diff()
print (new_df)
  Date Client  Sum  pct_change  diff
0  1/1      A  0.8         NaN   NaN
1  1/1      B  0.2       -0.75  -0.6
2  1/2      A  0.1         NaN   NaN
3  1/2      B  0.9        8.00   0.8