Python 统计数据帧中的唯一列表
我有一个带有列表列的数据框,我想找到一种方法返回一个数据框,其中列表在一列中,总计数在另一列中。我的问题是找到一种方法将包含相同值的列表相加,例如,我想在最后找到['a','b']和['b','a']的总和 例如,数据帧:Python 统计数据帧中的唯一列表,python,pandas,Python,Pandas,我有一个带有列表列的数据框,我想找到一种方法返回一个数据框,其中列表在一列中,总计数在另一列中。我的问题是找到一种方法将包含相同值的列表相加,例如,我想在最后找到['a','b']和['b','a']的总和 例如,数据帧: Lists Count ['a','b'] 2 ['a','c'] 4 ['b','a'] 3 将返回: Lists Count ['a','b'] 5 ['a','c']
Lists Count
['a','b'] 2
['a','c'] 4
['b','a'] 3
将返回:
Lists Count
['a','b'] 5
['a','c'] 4
这张单子不易损坏。所以,排序并转换为元组
In [80]: df
Out[80]:
count lists
0 2 [a, b]
1 4 [a, c]
2 3 [b, a]
In [82]: df['lists'] = df['lists'].map(lambda x: tuple(sorted(x)))
In [83]: df
Out[83]:
count lists
0 2 (a, b)
1 4 (a, c)
2 3 (a, b)
In [76]: df.groupby('lists').sum()
Out[76]:
count
lists
(a, b) 5
(a, c) 4
您还可以使用集合(将集合强制为字符串后)
嗯?如何计算['a','c']的计数为4.@Alexander很抱歉造成混淆,我正在查看“计数”列中的计数-因此,由于['a','c']是唯一的,因此计数保持为4。['a','b']和['b','a']在'count'列中为2+3;这就是我想要得到的。
df = pd.DataFrame({'Lists': [['a', 'b'], ['a', 'c'], ['b', 'a']],
'Value': [2, 4, 3]})
df['Sets'] = df.Lists.apply(set).astype(str)
>>> df.groupby(df.Sets).Value.sum()
Sets
set(['a', 'b']) 5
set(['a', 'c']) 4
Name: Value, dtype: int64