首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对Dataframe错误的字典:“如果使用所有标量值,则必须传递索引”

对Dataframe错误的字典:“如果使用所有标量值,则必须传递索引”
EN

Stack Overflow用户
提问于 2019-08-23 19:18:49
回答 4查看 34.2K关注 0票数 13

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

类型:对象日期时间:对象值: float64 ID : int64 ID名称: object。

请注意,这是一个嵌套字典,每个数据字段中都存储了数千个值。我有上面列出的26行结构。我试图将字典行附加到dataframe中,其中只有1行由数据字段组成:

索引日期时间值ID ID名称。

注意:我正在学习巨蟒。我尝试使用一个数组来存储数据,然后将数组转换成一个dataframe,但是我无法附加数据的行。

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

代码语言:javascript
运行
复制
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了。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-08-23 19:30:49

这个错误的发生是因为熊猫需要一个指数。一开始,这似乎有点令人困惑,因为您会想到列表索引。这实际上要求的是每个字典对应于每个字典的列号。您可以这样设置:

代码语言:javascript
运行
复制
import pandas as pd
list = ['a', 'b', 'c', 'd']
df = pd.DataFrame(list, index = [0, 1, 2, 3])

然后,数据框架产生:

代码语言:javascript
运行
复制
   0  
0 'a'
1 'b'
2 'c'
3 'd'

特别是对于您来说,使用numpy (未测试)可以这样做:

代码语言:javascript
运行
复制
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)
票数 5
EN

Stack Overflow用户

发布于 2021-01-01 13:24:23

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

代码语言:javascript
运行
复制
dct = {'col1': 'abc', 'col2': 123}
dct = {k:[v] for k,v in dct.items()}  # WORKAROUND
df = pd.DataFrame(dct)

这会导致

代码语言:javascript
运行
复制
print(df)

  col1  col2
0  abc   123
票数 10
EN

Stack Overflow用户

发布于 2020-09-19 19:49:59

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

代码语言:javascript
运行
复制
    data= {'a':[1],'b':[2]}

因为在你的情况下编辑数据并不容易,

hacky解决方案是将数据打包到列表中。

代码语言:javascript
运行
复制
    dataframe = pd.DataFrame([list_of_dfs])
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57631895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档