Jac*_*per 4 python resampling pandas
给定一个数据帧:
Index A B
2016-01-01 5 10
2016-01-01 1 2
2016-01-02 1 1
Run Code Online (Sandbox Code Playgroud)
是否可以使用sum重新采样DataFrame,并在DataFrame的末尾添加一列,其中包括bin中的观察计数,结果如下:
Index A B Count
2016-01-01 6 12 2
2016-01-02 1 1 1
Run Code Online (Sandbox Code Playgroud)
你可以使用Resampler.agg
或DataFrameGroupBy.agg
:
df1 = df.resample('D').agg({'A':'sum', 'B':['sum', 'size']})
print (df1)
B A
sum size sum
Index
2016-01-01 12 2 6
2016-01-02 1 1 1
df2 = df.groupby(level=0).agg({'A':'sum', 'B':['sum', 'size']})
print (df2)
B A
sum size sum
Index
2016-01-01 12 2 6
2016-01-02 1 1 1
Run Code Online (Sandbox Code Playgroud)
如果需要删除MultiIndex
列:
df1 = df.resample('D').agg({'A':'sum', 'B':['sum', 'size']})
df1.columns = ['B','Count','A']
df1 = df1[['A','B','Count']]
print (df1)
A B Count
Index
2016-01-01 6 12 2
2016-01-02 1 1 1
df2 = df.groupby(level=0).agg({'A':'sum', 'B':['sum', 'size']})
df2.columns = ['B','Count','A']
df2 = df2[['A','B','Count']]
print (df2)
A B Count
Index
2016-01-01 6 12 2
2016-01-02 1 1 1
Run Code Online (Sandbox Code Playgroud)