这是MRE:
data = [
{'1':20},
{'1':10},
{'1':40},
{'1':14},
{'1':33}
]
我想做的是遍历每个字典,并将每个值附加到数据帧中的列。
现在我在做
import pandas as pd
lst = []
for item in data:
lst.append(item['1'])
df = pd.DataFrame({"col1":lst})
输出:
col1
0 20
1 10
2 40
3 14
4 33
是的,这是我想要的,但是列表中有超过100万个字典。这是最有效的方法吗?
编辑:
pd.DataFrame(data).rename(columns={'1':'col1'})
完全适用于上述情况,但是如果数据看起来像这样怎么办?data = [
{'1':
{'value':20}},
{'1':
{'value':10}},
{'1':
{'value':40}},
{'1':
{'value':14}},
{'1':
{'value':33}}]
所以我会用:
lst = []
for item in data:
lst.append(item['1']['value'])
df = pd.DataFrame({"col1":lst})
有没有更有效的方法来包含字典的字典列表?
最佳答案
一种想法是将data
传递给DataFrame
cosntructor,然后使用rename
:
df = pd.DataFrame(data).rename(columns={'1':'col1'})
print (df)
col1
0 20
1 10
2 40
3 14
4 33
如果需要过滤,请使用列表理解并添加参数
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
编辑:对于新数据使用:
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
或者:
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
关于python - 遍历字典列表并将项追加到数据框中的列的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59386344/