【发布时间】:2017-04-21 19:49:33
【问题描述】:
x animal
0 5 [dog, cat]
1 6 [dog]
2 8 [elephant]
我有这样的数据框。我怎样才能找到所有列列表中包含的最常见的动物。
方法 value_counts() 将列表视为一个元素,我不能使用它。
【问题讨论】:
标签: pandas
x animal
0 5 [dog, cat]
1 6 [dog]
2 8 [elephant]
我有这样的数据框。我怎样才能找到所有列列表中包含的最常见的动物。
方法 value_counts() 将列表视为一个元素,我不能使用它。
【问题讨论】:
标签: pandas
也许退后一步重新定义您的数据结构?如果您的数据框是“扁平的”,Pandas 更适合。
代替:
x animal
0 5 [dog, cat]
1 6 [dog]
2 8 [elephant]
做:
x animal
0 5 dog
1 5 cat
2 6 dog
3 8 elephant
现在您可以使用 len(df[df['animal'] == 'dog']) 以及许多其他 Pandas 东西轻松数数!
要扁平化您的数据框,请参考以下答案: Flatten a column with value of type list while duplicating the other column's value accordingly in Pandas
【讨论】:
类似的东西?
import pandas as pd
df = pd.DataFrame({'x' : [5,6,8], 'animal' : [['dog', 'cat'], ['elephant'], ['dog']]})
x = sum(df.animal, [])
#x
#Out[15]: ['dog', 'cat', 'elephant', 'dog']
from collections import Counter
c = Counter(x)
c.most_common(1)
#Out[17]: [('dog', 2)]
【讨论】: