我正在尝试合并某些行,但不是对所有列进行通用操作。我想要 pbheadid 和 wpadr 与其他行合并时相等的行。这里 pickqty 应该求和,其他列应该从最后一个条目或最高 pickdtm 复制粘贴,但它是按最后一个条目排序的。
我可以预搜索索引并将它们保存在字典中。并根据这些索引更改每一行/列。然而,这并不是那么直接和快速。我认为使用 pandas groupby 应该可以更快。帮助将不胜感激。这是一段数据(请注意,pbheadid 类似,但在更大的数据集中会发生变化):
pbheadid pbcarid artid wpadr pickqty pickdtm
76079450 61838504 370944 523-370p 1 00:00:47
76079450 61838110 323775 523-372p 1 00:01:05
76079450 61838225 323775 523-372p 2 00:01:13
76079450 61838504 323775 523-372p 3 00:01:30
76079450 61838497 355475 523-373p 1 00:01:45
76079450 61838504 354194 523-377p 1 00:01:55
76079450 61838110 267204 523-376p 5 00:02:26
76079450 61838225 267204 523-376p 1 00:02:33
这应该是结果:
pbheadid pbcarid artid wpadr pickqty pickdtm
76079450 61838504 370944 523-370p 1 00:00:47
76079450 61838504 323775 523-372p 6 00:01:30
76079450 61838497 355475 523-373p 1 00:01:45
76079450 61838504 354194 523-377p 1 00:01:55
76079450 61838225 267204 523-376p 6 00:02:33
非常感谢!
最佳答案
IIUC 你可以这样做:
In [21]: (df.groupby(['pbheadid','wpadr'])
....: .agg({'pickqty':'sum', 'artid':'last', 'pbcarid':'last', 'pickdtm':'last'})
....: .reset_index()
....: )
Out[21]:
pbheadid wpadr artid pickqty pbcarid pickdtm
0 76079450 523-370p 370944 1 61838504 00:00:47
1 76079450 523-372p 323775 6 61838504 00:01:30
2 76079450 523-373p 355475 1 61838497 00:01:45
3 76079450 523-376p 267204 6 61838225 00:02:33
4 76079450 523-377p 354194 1 61838504 00:01:55
关于python - 组合 Pandas 行,其中不同的列需要不同的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38231462/