Python-以每月的一周为基础进行汇总并进行比较

问题描述 投票:0回答:2

我正在处理一个小的csv数据集,其中该值按照每月的每周发生次数进行索引。我想要的是按顺序汇总所有星期,不包括当前星期或最后一列,以计算剩余数据的每周平均值(... 10/1 + 11/1 + 12/1 ..的平均值)获取第1周的数据)。

数据以以下格式提供:

char 2019/11/1 2019/11/2 2019/11/3 2019/11/4 2019/11/5 2019/12/1 2019/12/2 2019/12/3 2019/12/4 2019/12/5 2020/1/1
A    1477      1577      1401      773       310       1401      1464      1417      909       712 289   
B    1684      1485      1220      894       297       1618      1453      1335      920       772 275
C    37        10        1         3         6         17        6         6         3         2    1
D    2041      1883      1302      1136      376       2175      1729      1167      960       745  278
E    6142      5991      5499      3883      1036      4949      6187      5760      3974      2339 826
F    842       846       684       462       140       789       802       134       386       251  94

此列(2020/1/1)将在以后与第一周的所有汇总值的平均值进行比较。所需的输出是这样的:

char    W1      W2      W3      W4      W5      2020/1/1
A       1439    1520.5  1409    841     511     289
B       1651    1469    1277.5  907     534.5   275
C       27      8       3.5     3       4       1
D       2108    1806    1234.5  1048    560.5   278
E       5545.5  6089    5629.5  3928.5  1687.5  826
F       815.5   824     409     424     195.5   94

在这种情况下是否可以使用滚动或重新采样?关于如何做的任何想法?

python pandas csv date aggregate
2个回答
1
投票

这里是使用groupby的方法:

m= df.set_index(['char', '2020/1/1']).rename(columns=lambda x: pd.to_datetime(x))
m.groupby(m.columns.week,axis=1).mean().add_prefix('W_').reset_index()

  char  2020/1/1         W_44    W_45    W_48     W_49
0    A       289  1485.000000   541.5  1401.0  1125.50
1    B       275  1463.000000   595.5  1618.0  1120.00
2    C         1    16.000000     4.5    17.0     4.25
3    D       278  1742.000000   756.0  2175.0  1150.25
4    E       826  5877.333333  2459.5  4949.0  4565.00
5    F        94   790.666667   301.0   789.0   393.25

1
投票

我相信您需要按周提交DataFrame.resample

DataFrame.resample
© www.soinside.com 2019 - 2024. All rights reserved.