python - 组合 Pandas 行,其中不同的列需要不同的操作

标签 python pandas

我正在尝试合并某些行,但不是对所有列进行通用操作。我想要 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/

相关文章:

python - AttributeError 列表对象没有添加属性

python - 重新分类 Pandas 数据框中的列

python - 在Python ftplib中在上传文件的名称中使用变量

python - 如何准备数据集以训练暹罗神经网络

python - 一维列表到 Pandas DataFrame

python - 如何在 pandas 数据框中获取与 SQL 中的 LIKE 运算符等效的值?

python - 从 Python 2 到 Python 3 的困惑过渡 : Why support both?

python - 循环遍历每一行值并返回列名称

python - Matplotlib 图形以奇怪的方式显示聚合函数

python - 基于字符串创建新列