当前,我正在使用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。
答案 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)