【问题标题】:How to create a DataFrame from a series containing a list of a single Dict如何从包含单个 Dict 列表的系列中创建 DataFrame
【发布时间】:2021-12-03 14:54:57
【问题描述】:

我有一个从 API 请求的响应创建的 pandas 数据框。我的数据框中的一个字段包含一个包含唯一字典的列表,如下所示: my dataframe

我想从这本字典创建一个新的数据框,我尝试了几种方法,但都没有成功,这是我尝试提取字典以将它们放入列表并从中创建数据框的示例:

traking = df['traking'].tolist()
temp_list = []
for li in traking:
    temp_list.append(li[0])

我收到 IndexError: list index out of range
但是如果我 print(li[0]) 我的字典出现了,我有点迷路了

【问题讨论】:

  • 您是否尝试过将跟踪字典直接转换为数据框? df = pd.DataFrame(traking)
  • 我遇到了相反的问题
  • 我试过了,但结果给了我一个带有 dict 值的跟踪系列的数据框,这不是我想要的结果

标签: python pandas dataframe data-analysis series


【解决方案1】:

我尝试复制您的数据框并根据您在下面的评论修改了答案。

import pandas as pd

lists = [[[{'key1': 'value1', 'key2': 'value2'}]],] * 10

df = pd.DataFrame(lists, columns=['traking'])

traking = df['traking'].tolist()
keys = list(traking[0][0].keys())
print(keys)

temp_list = []
for li in traking:
    values = [li[0][key] for key in keys]
    temp_list.append(values)
    
# Output:
# keys = ['key1', 'key2']
# temp_list = [['value1', 'value2'], 
#              ['value1', 'value2'],
#              ...,
#              ['value1', 'value2']]

这应该提供预期的输出

【讨论】:

  • 我想要这样的输出:` # foo bar etc # 0 value value value # 1 value value value `
  • 我遇到了相反的问题 (stackoverflow.com/questions/69573318/…)。谁能帮帮我?
  • 查看更新的答案
  • 我的输出“索引超出范围”中有相同的错误,但我的列表是正确的。当我尝试打印 li[0] 时,它可以工作,但是当我分配它们时,我收到“索引超出范围”错误消​​息。为了更精确,当我输入(跟踪)时,我有列表,当我输入(li)时,我有
  • 尝试打印你得到错误的行索引,并检查它是否是一个列表。在我看来,您正在尝试访问空列表的索引 0,
猜你喜欢
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 2017-02-17
  • 1970-01-01
  • 1970-01-01
  • 2013-12-18
  • 1970-01-01
相关资源
最近更新 更多