比较Pandas的相对开始日期

2024-10-02 04:25:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用数据透视表的输出创建一个相对开始日期表。透视表的列是月份,行是帐户,单元格是正在运行的操作总数。例如:

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中非常重要,我很好奇是否有任何关于如何开发相对起始点表的建议。谢谢您!你知道吗


Tags: 数据实例pandas格式帐户总数月份date1
2条回答

诀窍是将.apply()与dropna()结合使用。你知道吗

df.T.apply(lambda x: pd.Series(x.dropna().values)).T

首先,确保dataframe列是实际的datetime值。然后,可以运行以下操作来计算每个日期的操作总数,然后按月份对这些值进行分组,并计算相应的每月总数:

>>>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

如果你想让它反映你在上面所做的:

>>> 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

如上所述重命名列。你知道吗

相关问题 更多 >

    热门问题