计算包含列表的熊猫系列中元素的出现

时间:2019-07-19 01:21:01

标签: python-3.x pandas

我一直在处理大量数据,其中每个元素都是单个字符串,例如:

["apple", "egg", "carrot", "milk", "apple", "apple"]

我一直将它们变成pandas系列,然后使用value_counts()来计算列表中每个唯一项的出现次数。但是,现在我面对的是包含列表的列表:

["apple", ["apple", "egg"], "egg", "carrot", ["milk", "egg"], 
 ["milk", "apple", "carrot"], "apple"]

我正在寻找一种方法来计算除每个唯一字符串之外的每个唯一列表的出现次数。

我尝试将这些列表列表转换为序列,并在其上使用value_counts(),但会引发unhashable type: list错误。将这些子列表更改为set或ndarrays时,也会遇到相同的错误。

我总是可以将这些列表放入一堆for循环中,但是我不知道我的计算机是否具有在任何合理的时间内执行此操作的计算能力。我希望可以以类似于value_counts()的速度工作的东西,但是我一辈子都无法弄清楚如何实现它。任何见识将不胜感激。

1 个答案:

答案 0 :(得分:0)

如何将子列表封装为字符串如下

Your sample:

In [392]: s
Out[392]:
0                    apple
1             [apple, egg]
2                      egg
3                   carrot
4              [milk, egg]
5    [milk, apple, carrot]
6                    apple
dtype: object


s.astype(str).value_counts()

Out[391]:
apple                          2
egg                            1
carrot                         1
['milk', 'apple', 'carrot']    1
['milk', 'egg']                1
['apple', 'egg']               1
dtype: int64