给定一个数据框:

Index       A  B
2016-01-01  5  10
2016-01-01  1  2
2016-01-02  1  1

是否可以使用 sum 重新采样 DataFrame 并在 DataFrame 的末尾添加一列,其中包括 bin 中的观察计数,以便结果为:
Index      A  B  Count
2016-01-01 6  12 2
2016-01-02 1  1  1

最佳答案

您可以使用 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

如果需要删除列中的 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

关于python - Pandas 重新采样并将大小添加为一列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40650886/

10-12 21:00