python pandas计算一列中列表内的出现次数

时间:2018-10-03 09:37:11

标签: python pandas dataframe

说我有一个像

这样的数据框
    A     B     
0  [1,2]  Q     

1  [1,3]  Q     

2  [4,2]  Q     

我想要A列列表中每个元素的计数

所以我想要的结果是

    Number  Count
0     1       2

1     2       2

2     3       1

3     4       1

我不确定该怎么做。预先谢谢你

3 个答案:

答案 0 :(得分:3)

将一系列列表转换为数据框,堆叠列并在该系列上使用value_counts,即

count = pd.DataFrame(df['A'].values.tolist()).stack().value_counts()

pd.DataFrame({'Count':count.values,'Number':count.index})

  Count  Number
0      2       2
1      2       1
2      1       4
3      1       3

# demo dataframe : df = pd.DataFrame({'A': [[1,2], [1,3], [4,2]]})

答案 1 :(得分:2)

您需要:

from collections import Counter
sl = []
_ = [sl.extend(j) for i,j in df['A'].items()]
x = Counter(sl)

new_df = pd.DataFrame({'Number': list(x.keys()), 'Count': list(x.values())})
print(new_df)

输出

    Number  Count
0   1       2
1   2       2
2   3       1
3   4       1

答案 2 :(得分:2)

您可以将collections.Counteritertools.chain一起使用:

from itertools import chain
from collections import Counter

counts = Counter(chain.from_iterable(df['A']))

res = pd.DataFrame.from_dict(counts, orient='index').reset_index()
res.columns =['Number', 'Count']

print(res)

   Number  Count
0       1      2
1       2      2
2       3      1
3       4      1