我是python3的新手,几个月前我是R用户。
这是问题所在。
我的数据框( df1 )看起来像这样:
Date quarter number
2015-10-09 1 250
2015-10-09 2 400
2015-10-09 3 310
2015-10-10 1 300
2015-10-10 2 410
2015-10-10 3 280
. . .
. . .
数据超过5000。上图仅几行。
我想要的是每天四分之一之间的绝对差值。
我想要的结果数据帧应类似于以下帧:
Date absolute_interval
2015-10-09 150
2015-10-09 90
2015-10-10 110
2015-10-10 130
. .
. .
我尝试使用 df2 = df1.groupby('Date')。
然后我想申请循环。
我的伪代码是
for k in df2:
for u in df2[k]:
但是我认为这行不通,所以我目前停留在这里。
有解决方案吗?
谢谢,祝你有美好的一天。
答案 0 :(得分:1)
pd.concat([df.Date,df.groupby('Date').number.diff().abs()],axis=1).dropna()
Out[608]:
Date number
1 2015-10-09 150.0
2 2015-10-09 90.0
4 2015-10-10 110.0
5 2015-10-10 130.0
您也可以这样做:
pd.DataFrame(df.groupby('Date').apply(lambda x: abs(x['number']-x['number'].shift(1))).dropna())
number
Date
2015-10-09 1 150.0
2 90.0
2015-10-10 4 110.0
5 130.0
如果需要,您可以在末尾添加.reset_index()