大Pandas如何按日期分组计数

2024-05-16 07:16:19 发布

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

有一个熊猫数据帧如下。我需要计算特定日期的OrginDestination组合的总计数,并将总计数写入名为totalcount的新列

输入数据

Date       ORG  DEST    LoadMeter 
6/6/2018    FR  EST       4
6/6/2018    FR  EST       5
6/6/2018    BE  CZ        7
6/6/2018    BE  CZ        8
6/6/2018    BE  CZ        2
7/6/2018    BE  CZ        6
7/6/2018    BE  CZ        2
7/6/2018    FR  EST       4
8/6/2018    FR  EST       6
8/6/2018    LUX EST       2
8/6/2018    LUX EST       4
8/6/2018    FR  EST       6

预期产量

Date    ORG     DEST    LoadMeter   Total Meter 
6/6/2018    FR  EST          4        9
6/6/2018    FR  EST          5        9
6/6/2018    BE  CZ           7       17
6/6/2018    BE  CZ           8       17
6/6/2018    BE  CZ           2       17
7/6/2018    BE  CZ           6        8
7/6/2018    BE  CZ           2        8
7/6/2018    FR  EST          4        4
8/6/2018    FR  EST          6       12
8/6/2018    LUX EST          2        6
8/6/2018    LUX EST          4        6
8/6/2018    FR  EST          6       12

如何做到这一点。你知道吗


Tags: 数据orgdateczbefrdestinationdest
2条回答

使用transformsum

df.groupby(['Date','ORG','DEST']).LoadMeter.transform('sum')
Out[262]: 
0      9
1      9
2     17
3     17
4     17
5      8
6      8
7      4
8     12
9      6
10     6
11    12
Name: LoadMeter, dtype: int64

df['Total']=df.groupby(['Date','ORG','DEST']).LoadMeter.transform('sum')

factorizenumpy.add.at

cols = ['Date', 'ORG', 'DEST']
i, u = pd.factorize([*zip(*map(df.get, cols))])

a = np.zeros(len(u), dtype=np.int64)
np.add.at(a, i, df.LoadMeter)
df.assign(**{'Total Meter': a[i]})

        Date  ORG DEST  LoadMeter  Total Meter
0   6/6/2018   FR  EST          4            9
1   6/6/2018   FR  EST          5            9
2   6/6/2018   BE   CZ          7           17
3   6/6/2018   BE   CZ          8           17
4   6/6/2018   BE   CZ          2           17
5   7/6/2018   BE   CZ          6            8
6   7/6/2018   BE   CZ          2            8
7   7/6/2018   FR  EST          4            4
8   8/6/2018   FR  EST          6           12
9   8/6/2018  LUX  EST          2            6
10  8/6/2018  LUX  EST          4            6
11  8/6/2018   FR  EST          6           12

相关问题 更多 >