我最感兴趣的是如何以一种优秀的熊猫方式来完成这项工作。
在该示例中,来自Osaka
的数据Tim
具有两个fruit
。
import pandas as pd
data = {'name': ['Susan', 'Tim', 'Tim', 'Anna'],
'fruit': ['Apple', 'Apple', 'Banana', 'Banana'],
'town': ['Berlin', 'Osaka', 'Osaka', 'Singabpur']}
df = pd.DataFrame(data)
print(df)
结果
name fruit town
0 Susan Apple Berlin
1 Tim Apple Osaka
2 Tim Banana Osaka
3 Anna Banana Singabpur
我调查了数据,发现其中一个人有多种水果。我想创建一个新的";类别";因为它被命名为CCD_ 4(或其他什么(。关键是Tim
的其他字段的值相等。
df.groupby(['name', 'town', 'fruit']).size()
我不确定这是否是探索这个数据集的正确方法。背后的逻辑问题是,一些人+镇的组合是否有多种果实。
因此,我想要这个
name fruit town
0 Susan Apple Berlin
1 Tim Apple&Banana Osaka
2 Anna Banana Singabpur
使用groupby agg
:
new_df = (
df.groupby(['name', 'town'], as_index=False, sort=False)
.agg(fruit=('fruit', '&'.join))
)
new_df
:
name town fruit
0 Susan Berlin Apple
1 Tim Osaka Apple&Banana
2 Anna Singabpur Banana
>>> df.groupby(["name", "town"], sort=False)["fruit"]
.apply(lambda f: "&".join(f)).reset_index()
name town fruit
0 Anna Singabpur Banana
1 Susan Berlin Apple
2 Tim Osaka Apple&Banana