在数据框中计算唯一列表

2024-04-24 13:15:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有列表列的pandas数据帧,我想找到一种方法来返回一个数据帧,其中一列包含列表,另一列包含总计数。我的问题是如何将包含相同值的列表相加,例如,我想在最后找到['a'、'b']和['b'、'a']的总和。你知道吗

例如数据帧:

Lists          Count
['a','b']        2
['a','c']        4
['b','a']        3

将返回:

Lists          Count
['a','b']        5
['a','c']        4

Tags: 数据方法pandas列表countlists计数总和
2条回答

名单不可更改。所以,排序并转换成元组

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

也可以使用集合(将它们强制为字符串之后)。你知道吗

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

相关问题 更多 >