我有以下 Dataframe :
import pandas as pd
d1 = {'id': ["car", "car", "bus", "plane", "plane"], 'value': [["a","b"], ["b","a"], ["a","b"], ["c","d"], ["d","c"]]}
df1 = pd.DataFrame(data=d1)
df1
id value
0 car [a, b]
1 car [b, a]
2 bus [a, b]
3 plane[c, d]
4 plane[d, c]
我想根据值列表的内容对id进行分组。元素的顺序应该无关紧要。之后,我想根据组的大小对它们进行排序,所以我得到如下内容:
一个二个一个一个
我尝试使用Counter()将我的列表转换为字典,然后获取组的大小。然而,我得到了以下错误:
import collections
df1["temp"] = list(map(collections.Counter, df1["value"]))
df1 = df1.groupby('temp').size().sort_values(ascending = True)
TypeError:不可哈希的类型:'计数器'
2条答案
按热度按时间jdzmm42g1#
你可以对列表进行排序以忽略顺序。
list
类型是不可散列的,将它们转换为tuple
然后你可以groupby
。输出:
55ooxyrt2#
对
value
列进行排序,并将其转换为字符串,然后将其用作分组标准: