字典到数据框错误:“如果使用所有标量值,则必须传递索引”

新手上路,请多包涵

目前,我正在使用 for 循环从文件夹中读取 csv 文件。读取 csv 文件后,我将数据存储到字典的一行中。当我使用“print(list_of_dfs.dtypes)”打印数据类型时,我收到:

dtype:对象 DATETIME:对象 VALUE:float64 ID:int64 ID 名称:对象。

请注意,这是一个嵌套字典,每个数据字段中存储了数千个值。我有 26 行上面列出的结构。我正在尝试将字典行附加到数据框中,我将只有 1 行包含数据字段:

索引 DATETIME VALUE ID ID 名称。

注意:我正在学习 python。我尝试使用数组来存储数据,然后将数组转换为数据框,但我无法附加数据框的行。

我尝试使用字典方法“df = pd.Dataframe(list_of_dfs)”这会引发错误。

 list_of_dfs = {}

for I in range(0,len(regionLoadArray)
list_of_dfs[I] = pd.read_csv(regionLoadArray[I])

#regionLoadArray contains my- file names from list directory.

dataframe = pd.DataFrame(list_of_dfs)
#this method was suggested at thispoint.com for nested dictionaries.
#This is where my error occurs^

ValueError:如果使用所有标量值,则必须传递一个索引

由于我是 python 的新手,因此我感谢您对此问题的任何帮助。我目前的目标是简单地生成一个带有标题的数据框,然后我可以将其发送到 csv。

原文由 Lonsdale_Energy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 410
2 个回答

发生此错误是因为 pandas 需要索引。起初这似乎有点令人困惑,因为您想到的是列表索引。这本质上要求的是每个字典对应于每个字典的列号。您可以这样设置:

 import pandas as pd
list = ['a', 'b', 'c', 'd']
df = pd.DataFrame(list, index = [0, 1, 2, 3])

然后数据框产生:

    0
0 'a'
1 'b'
2 'c'
3 'd'

具体对于您来说,使用 numpy(未测试)可能看起来像这样:

 list_of_dfs = {}

for I in range(0,len(regionLoadArray)):
    list_of_dfs[I] = pd.read_csv(regionLoadArray[I])

ind = np.arange[len(list_of_dfs)]

dataframe = pd.DataFrame(list_of_dfs, index = ind)

原文由 angrymantis 发布,翻译遵循 CC BY-SA 4.0 许可协议

根据您的需要,一个简单的解决方法可能是:

 dct = {'col1': 'abc', 'col2': 123}
dct = {k:[v] for k,v in dct.items()}  # WORKAROUND
df = pd.DataFrame(dct)

这导致

print(df)

  col1  col2
0  abc   123

原文由 gebbissimo 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题