在python中将一个数据框中的列添加到groupby数据框中

2024-09-28 22:24:14 发布

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

我在python中有两个数据帧。{第一年第二天的降雨量是第二天的原始数据。在

一个数据帧如下所示(设备标识之间有更多行):

>>> df1
                             device_id      rain  day  month  year
0     9z849362-b05d-4317-96f5-f267c1adf8d6   0.0   31     12  2016
1     9z849362-b05d-4317-96f5-f267c1adf8d6   0.0   31     12  2016
6     e7z581f0-2693-42ad-9896-0048550ccda7   0.0   31     12  2016
11    e7z581f0-2693-42ad-9896-0048550ccda7   0.0   31     12  2016
12    ceez972b-135f-45b3-be4w-7c23102676bq   0.2   31     12  2016
13    ceez972b-135f-45b3-be4w-7c23102676bq   0.0   31     12  2016
18    ceez972b-135f-45b3-be4w-7c23102676bq   0.0   31     12  2016
19    1d28dz3a-c923-4967-a7bb-5881d232c9a7   0.0   31     12  2016
24    1d28dz3a-c923-4967-a7bb-5881d232c9a7   0.0   31     12  2016
25    a044ag4f-fd7c-4ae4-bff3-9158cebad3b1   0.0   31     12  2016
29    a044ag4f-fd7c-4ae4-bff3-9158cebad3b1   0.0   31     12  2016
29    a044ag4f-fd7c-4ae4-bff3-9158cebad3b1   0.0   31     12  2016
...                                    ...   ...  ...    ...   ...
3903  9z849362-b05d-4317-96f5-f267c1adf8d6   0.0   31     12  2016
3904  9z849362-b05d-4317-96f5-f267c1adf8d6   0.0   31     12  2016
3905  9z849362-b05d-4317-96f5-f267c1adf8d6   0.0   31     12  2016

另一个看起来像这样:

^{pr2}$

。。。我用的是:

df2 = df1.groupby(['device_id'])[["rain"]].sum()

我希望我的最终数据框如下所示:

>>> df3
                                  rain      day  month  year
device_id
1d28dz3a-c923-4967-a7bb-5881d232c9a7   0.0  31   12     2016
9z849362-b05d-4317-96f5-f267c1adf8d6   0.0  31   12     2016
a044ag4f-fd7c-4ae4-bff3-9158cebad3b1   1.2  31   12     2016
ceez972b-135f-45b3-be4w-7c23102676bq   2.2  31   12     2016 
e7z581f0-2693-42ad-9896-0048550ccda7   0.2  31   12     2016

也就是说,我希望将df1中的“日-月-年”列添加到df2。我不确定我是应该使用mergeappend,还是做其他事情。在


Tags: 数据iddevicedf1raina7bbceez972be7z581f0
1条回答
网友
1楼 · 发布于 2024-09-28 22:24:14

这可能行得通吗?也可以按年分组。在

df.groupby(['device_id', 'day', 'month', 'year']).sum()
                                                     rain
device_id                            day month year      
1d28dz3a-c923-4967-a7bb-5881d232c9a7 31  12    2016   0.0
9z849362-b05d-4317-96f5-f267c1adf8d6 31  12    2016   0.0
a044ag4f-fd7c-4ae4-bff3-9158cebad3b1 31  12    2016   0.0
ceez972b-135f-45b3-be4w-7c23102676bq 31  12    2016   0.2
e7z581f0-2693-42ad-9896-0048550ccda7 31  12    2016   0.0

或者您可以添加reset_index以将这些列返回到DataFrame,如下所示

^{pr2}$

或者下面的内容应该与您的索引/列结构完全匹配。在

df.groupby(['device_id', 'day', 'month', 'year']).sum().reset_index([1, 2, 3])

相关问题 更多 >