我有一个包含多个列表的列表,并希望创建一个数据框,其中包含所有唯一元素的计数。以下是我的测试数据:
test = [["P1", "P1", "P1", "P2", "P2", "P1", "P1", "P3"],
["P1", "P1", "P1"],
["P1", "P1", "P1", "P2"],
["P4"],
["P1", "P4", "P2"],
["P1", "P1", "P1"]]
我可以使用Counter
和for
循环来完成这样的操作:
from collections import Counter
for item in test:
print(Counter(item))
但是如何将这个循环的结果汇总成一个新的数据框呢?
期望的输出结果是一个数据框:
P1 P2 P3 P4
15 4 1 2
from itertools import chain.from_iterable as concat
。 - Ma0from itertools import chain as concat
是可能的,尽管我同意他们目前的一行代码很恶心,但除此之外还是个不错的答案。(我进行了编辑,希望没问题) - Chris_Randspd.DataFrame.from_dict(c, orient='index').transpose()
或者更简短的方式是:pd.DataFrame(c, index=[0])
。 - CodeZeroitertools.chain.from_iterable
,我一直认为这个名称太长了。无论如何,我认为他们指的是 http://toolz.readthedocs.io/en/latest/api.html#toolz.itertoolz.concat。 - Chris_Rands