我有以下数据框。
水果 | 说明 |
---|---|
苹果 | ["红色", "大"] |
香蕉 | ["黄色", "长"] |
香蕉 | [“拉长,扭曲”] |
桃子 | ["圆形"] |
苹果 | ["圆形", "绿色"] |
我正在尝试通过列表的串联,根据水果的描述进行分组。 我应该得到:
水果 | 说明 |
---|---|
苹果 | ["红色", "大", "圆形", "绿色"] |
香蕉 | [“黄色”、“长”、“拉长、扭曲”] |
桃子 | ["圆形"] |
我遵循了此处提供的解决方案:pandas groupby and join lists:
df = df.groupby('Fruit', as_index=False).agg(Description =('Description', 'sum'))
但我得到的是相互关联的列表:
水果 | 说明 |
---|---|
苹果 | ["红色", "大"]["圆形", "绿色"] |
香蕉 | ["黄色", "长"]["细长,扭曲"] |
桃子 | ["圆形"] |
有没有人有解决办法? 谢谢!
答案 0 :(得分:2)
那是因为您的 Description
列是字符串。您可以去掉 []
并求和:
'[' + df['Description'].str[1:-1].groupby(df['Fruit']).agg(', '.join) + ']'
答案 1 :(得分:1)
为了保持您的列表格式,我建议您先运行一个命令:
import json
df['Description'] = df['Description'].apply(json.loads)
df = df.groupby('Fruit', as_index=False).agg(Description =('Description', 'sum'))
这样,您在 Description
列中的值将是实际列表,而不是字符串。