我正在尝试合并数据框中包含ID数据列和多个包含不同字符串的列的行。似乎groupby是解决方案,但它似乎倾向于在组上执行某些数字函数-我只想保留文本。以下是我的代码:
我有一个如下所示的数据框:
index ID apples pears oranges
0 101 oranges
1 134 apples
2 576 pears
3 837 apples
4 576 oranges
5 134 pears
这些栏目已清理干净:所以苹果栏中只会有文字“apples”,或者为空。
在同一ID下有多个条目时(在此示例中为134和576),我想将行折叠在一起以获得如下结果:
index ID apples pears oranges
0 101 oranges
1 134 apples pears
2 576 pears oranges
3 837 apples
我可以通过迭代行来完成此操作,但这似乎不是pandas的解决方案。有更好的方法吗?
df = df.groupby('ID').agg(''.join)
? - user4896331.agg(''.join)
对我非常有效(有关基本概念的更多信息在此处:https://docs.python.org/3/reference/expressions.html#lambda),但是当我使用`.agg(lambda x: ''.join(x.unique()))时,pandas会删除具有空白的列。我必须使用
.astype(str)和
.replace(to_replace=[None],value='')`才能最终获得所有起始数据。值得注意的是,在我的情况下,所有数据都可以是字符串。 - ptmalcolm