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

时间:2019-08-23 19:18:49

标签: python excel pandas dataframe dictionary

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

dtype:对象 DATETIME:对象 值:float64 编号: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。

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

不幸的是,创建DatFrame时,熊猫总是需要一个索引。 您可以自己设置它,也可以使用具有以下结构的对象,以便熊猫可以确定索引本身:

    data= {'a':[1],'b:[2]}

由于要修改您的案例中的数据并不容易,

一种骇人听闻的解决方案是将数据包装到列表中

    dataframe = pd.DataFrame([list_of_dfs])

答案 2 :(得分:0)

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

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)