python - 遍历字典列表并将项追加到数据框中的列的有效方法

标签 python pandas

这是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/

相关文章:

python - 更改 plot_surface 中的线条颜色

python - Pandas 通过计算多列将函数应用于每一行

python - python 中的数据帧操作

python - 替换嵌套的 for 循环结合条件以提高性能

使用正则表达式拆分 Python 字符串

python - 从 Python 更新 nvarchar(max) 列时出错

python - SQLAlchemy 一对多查询

python - python中的变化点检测

python - 使用分层列创建 DataFrame

python - 线程: function seems to run as a blocking loop although i am using threading