我想使用 Pandas 数据透视表的输出创建一个相对开始日期表。数据透视表的列是月份,行是帐户,单元格是操作的运行总计。例如:
Date1 Date2 Date3 Date4
1 1 2 3
N/A 1 2 2
第一行的第一个实例是 Date1。 第二行的第一个实例是 Date2。
新表格的格式如下:现在各列是相对于第一个操作的月份,如下所示:
FirstMonth SecondMonth ThirdMonth
1 1 2
1 2 2
在 pandas 中创建初始数据透视表非常简单,我很好奇是否有任何关于如何开发相对起点表的建议。谢谢!
最佳答案
首先,确保您的数据框列是实际的日期时间值。然后,您可以运行以下命令来计算每个日期的操作总和,然后按月对这些值进行分组并计算相应的每月总和:
>>>df
2019-01-01 2019-01-02 2019-02-01
Row
0 4 22 40
1 22 67 86
2 72 27 25
3 0 26 60
4 44 62 32
5 73 86 81
6 81 17 58
7 88 29 21
>>>df.sum().groupby(df.sum().index.month).sum()
1 720
2 403
如果您希望它反射(reflect)您上面的内容:
>>> out = df.sum().groupby(df.sum().index.month).sum().to_frame().T
>>> out.columns = [datetime.datetime.strftime(datetime.datetime.strptime(str(x),'%m'),'%B') for x in out.columns]
>>> out
January February
0 720 403
如果我误解了你,而你希望按记录/行进行分割:
>>> df.T.groupby(df.T.index.month).sum().T
1 2
Row
0 26 40
1 89 86
2 99 25
3 26 60
4 106 32
5 159 81
6 98 58
7 117 21
将列重命名为上面的内容。
关于python - 比较 Pandas 中的相对开始日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58612693/