说我有一个像
这样的数据框 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
我不确定该怎么做。预先谢谢你
答案 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.Counter
与itertools.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