gpt4 book ai didi

python-3.x - 折叠 Pandas 数据框中的行

转载 作者:行者123 更新时间:2023-12-04 21:55:54 24 4
gpt4 key购买 nike

我正在尝试折叠数据帧中的行,该数据帧包含一列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列将永远只在其中包含文本“apples”,否则它将为空白”。

在同一个ID下有多个条目的情况下(在此示例中,在ID 134和576上),我想将这些行折叠起来以得到以下信息:
index    ID     apples    pears    oranges
0 101 oranges
1 134 apples pears
2 576 pears oranges
3 837 apples

我可以通过遍历行来做到这一点,但这似乎是非 Pandas 解决方案。有没有更好的办法?

最佳答案

您可以将 groupby 与聚合''.joinsummax结合使用:

#if blank values are NaN first replace to ''
df = df.fillna('')

df = df.groupby('ID').agg(''.join)
print (df)
apples pears oranges
ID
101 oranges
134 apples pears
576 pears oranges
837 apples

也可以:
df = df.fillna('')
df = df.groupby('ID').sum()
#alternatively max
#df = df.groupby('ID').max()
print (df)
apples pears oranges
ID
101 oranges
134 apples pears
576 pears oranges
837 apples

另外,如果需要删除每个组和每个列的重复项,请添加 unique :
df = df.groupby('ID').agg(lambda x: ''.join(x.unique()))

关于python-3.x - 折叠 Pandas 数据框中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43514019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com