这是 MRE:
data = [
{'1':20},
{'1':10},
{'1':40},
{'1':14},
{'1':33}
]
Run Code Online (Sandbox Code Playgroud)
我想要做的是遍历每个字典并将每个值附加到数据框中的列。
现在我正在做
import pandas as pd
lst = []
for item in data:
lst.append(item['1'])
df = pd.DataFrame({"col1":lst})
Run Code Online (Sandbox Code Playgroud)
输出:
col1
0 20
1 10
2 40
3 14
4 33
Run Code Online (Sandbox Code Playgroud)
是的,这就是我想要的,但是我的列表中有超过 100 万本词典。这是最有效的方法吗?
编辑:
pd.DataFrame(data).rename(columns={'1':'col1'})
适用于上述情况,但是如果数据看起来像这样怎么办?
data = [
{'1':
{'value':20}},
{'1':
{'value':10}},
{'1':
{'value':40}},
{'1':
{'value':14}},
{'1':
{'value':33}}]
Run Code Online (Sandbox Code Playgroud)
所以我会使用:
lst = []
for item in data:
lst.append(item['1']['value'])
df = pd.DataFrame({"col1":lst})
Run Code Online (Sandbox Code Playgroud)
包含字典的字典列表有更有效的方法吗?
一种想法是传递data给DataFrame构造函数,然后使用rename:
df = pd.DataFrame(data).rename(columns={'1':'col1'})
print (df)
col1
0 20
1 10
2 40
3 14
4 33
Run Code Online (Sandbox Code Playgroud)
如果需要过滤,请使用列表理解并添加参数columns:
df = pd.DataFrame([x['1'] for x in data], columns=['col1'])
print (df)
col1
0 20
1 10
2 40
3 14
4 33
Run Code Online (Sandbox Code Playgroud)
编辑:对于新数据使用:
data = [
{'1':
{'value':20}},
{'1':
{'value':10}},
{'1':
{'value':40}},
{'1':
{'value':14}},
{'1':
{'value':33}}]
df = pd.DataFrame([x['1']['value'] for x in data], columns=['col1'])
print (df)
col1
0 20
1 10
2 40
3 14
4 33
Run Code Online (Sandbox Code Playgroud)
或者:
df = pd.DataFrame([x['1'] for x in data]).rename(columns={'value':'col1'})
print (df)
col1
0 20
1 10
2 40
3 14
4 33
Run Code Online (Sandbox Code Playgroud)