我想创建一个唯一的水果数据集。我不知道每种水果下可能存在的所有类型(例如颜色商店、价格)。对于每种类型,也可能存在重复行。是否有一种方法可以检测所有可能的重复项,并以完全概括的方式捕获所有唯一信息?
type val detail
0 fruit apple
1 colour green greenish
2 colour yellow
3 store walmart usa
4 price 10
5 NaN
6 fruit banana
7 colour yellow
8 fruit pear
9 fruit jackfruit
...
预期输出
fruit colour store price detail ...
0 apple [green, yellow ] [walmart] [10] [greenish, usa]
1 banana [yellow] NaN NaN
2 pear NaN NaN NaN
3 jackfruit NaN NaN NaN
我试过了。但是这没有接近预期的输出。它也没有显示列名称。
df.groupby("type")["val"].agg(size=len, set=lambda x: set(x))
0 fruit {"apple",...}
1 colour ...
1条答案
按热度按时间fykwrbwg1#
首先,如果类型为
fruit
,则使用val
值创建fruit
列,将不匹配的值替换为NaN
并向前填充缺失值,然后使用自定义函数按DataFrame.pivot_table
进行透视,以获得不含NaN
的唯一值,然后展平MultiIndex
: