我在数据框中有一列,每一行都是一个列表,该列表是许多具有相同键的词典的集合。我想从字典中的同一键中获取所有项目。
我有这个列表:
s = [{'category': 'Public',
'name': 'Newspaper',
'person': 'A'},
{'category': 'Music',
'name': 'Andre',
'person': 'B'},
{'category': 'Music',
'name': 'Indian',
'person': 'A'},
{'category': 'Artist',
'name': 'Rihe',
'person': 'D'},
{'category': 'Interest',
'name': 'Sport',
'person': 'B'}]
我尝试使用循环和itemgetter,但是由于数据量大,这会花费很多时间。我正在寻找一种更有效的方法。
from operator import itemgetter
category = []
name_page = []
getter_category = itemgetter('category')
getter_name = itemgetter('name')
for element in s:
name_page.append(getter_name(element))
category.append(getter_category(element))
我想要更高效的东西,例如:
s['category'] = ['Public','Music','Music','Artist','Interest']
s['name'] = ['Newspaper','Andre','Indian','Rihe','Sport']
s['person'] = ['A','B','A','D','B']
答案 0 :(得分:3)
使用defaultdict
中的collections
from collections import defaultdict
o = defaultdict(list)
for ss in s:
for k, v in ss.items():
o[k] += [v]
print(dict(o))
Out[7]:
{'category': ['Public', 'Music', 'Music', 'Artist', 'Interest'],
'name': ['Newspaper', 'Andre', 'Indian', 'Rihe', 'Sport'],
'person': ['A', 'B', 'A', 'D', 'B']}
答案 1 :(得分:0)
我不想使用字典。我找到了最简单的方法,它正在使用数据框。
s = pd.DataFrame(s)
-------------------------
|category | name | person|
-------------------------
|Public | Music | Music |
---------------------------
|Newspaper | Andre | Indian|
----------------------------
s['category'].to_list() = ['Public','Music','Music','Artist','Interest']