当前位置: 首页 > 知识库问答 >
问题:

获取错误:“ValueError:如果使用所有标量值,则在将ndarray转换为Dataframe时必须传递索引”

赫连智
2023-03-14

按照以下代码将多个ndarray转换为df

import  numpy as np
import pandas as pd

ls_a = ['TA', 'BAT', 'T']
xxx = ['xx', 'cc']

feature_no = len(ls_a)
windows_no = len(xxx)


sub_iti = np.repeat([['s1']], (feature_no * windows_no), axis=0).reshape(-1, 1)
tw = np.repeat([xxx], feature_no, axis=1).reshape(-1, 1)
col_iti = np.repeat([ls_a], windows_no, axis=0).reshape(-1, 1)

df=pd.DataFrame ({'sub_iti': sub_iti,'tw': tw,'col_iti': col_iti})

,编译器返回一个错误

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

基于OP,参数索引输入如下

 df=pd.DataFrame (
             {'sub_iti': sub_iti,
              'tw': tw,
              'col_iti': col_iti},index=range(0,3*2) )

但是,编译器返回diff rent错误

例外:数据必须是一维的

我可以知道如何解决这个问题吗?

共有1个答案

公冶嘉茂
2023-03-14

所有的sub_iti,tw,col_iti都是2D Numpy数组。然而,当你这样做时:

df=pd.DataFrame ({'sub_iti': sub_iti,
                   'tw': tw,
                   'col_iti': col_iti} )

熊猫期望它们是1DNumpy数组或列表,因为DataFrame的列应该是这样的。你可以试试:

df=pd.DataFrame ({'sub_iti': sub_iti.tolist(),
                 'tw': tw.tolist(),'col_iti': col_iti.tolist()})

输出:

  sub_iti    tw col_iti
0    [s1]  [xx]    [TA]
1    [s1]  [xx]   [BAT]
2    [s1]  [xx]     [T]
3    [s1]  [cc]    [TA]
4    [s1]  [cc]   [BAT]
5    [s1]  [cc]     [T]

但我认为您应该删除每个单元格中的列表,并使用ravel()而不是tolist()

df=pd.DataFrame ({'sub_iti': sub_iti.ravel(),
                 'tw': tw.ravel(),'col_iti': col_iti.ravel()})

输出:

  sub_iti  tw col_iti
0      s1  xx      TA
1      s1  xx     BAT
2      s1  xx       T
3      s1  cc      TA
4      s1  cc     BAT
5      s1  cc       T
 类似资料:
  • 我在python上运行了以下代码,以便从一开始就检索各种加密货币收盘价。我已使用以下代码成功运行它: 现在,我将其更改如下(包括完整代码),并得到一个ValueError。 [LN1] [LN2] [LN3] [LN4] 我现在得到以下错误: --------------------------------------------------------------------------- Va

  • 这可能是一个简单的问题,但我不知道如何做到这一点。假设我有两个变量,如下所示。 我想从这里构造一个数据帧: 这将生成一个错误: ValueError:如果使用所有标量值,则必须传递索引 我也试过: 这会给出相同的错误消息。

  • 问题内容: 我在导入带有熊猫的JSON文件时遇到一些困难。 这是我得到的错误: 文件结构是这样简化的: 它来自Coursera的华盛顿大学的机器学习课程。您可以在这里找到文件。 问题答案: 尝试 该文件仅包含键值为标量的键值对。您可以使用将其转换为数据框。 您还可以执行以下操作: 现在数据就是字典。您可以将其传递给数据框构造函数,如下所示:

  • 我在导入带有熊猫的JSON文件时遇到了一些困难。 这是我得到的错误: 文件结构简化如下: 它来自Coursera上的华盛顿大学机器学习课程。你可以在这里找到文件。

  • 目前,我使用for循环从文件夹中读取csv文件。读取csv文件后,我将数据存储到字典的一行中。当我使用"print(list_of_dfs.dtypes)"打印数据类型时,我会收到: 数据类型:对象日期时间:对象值:float64 ID:int64 ID名称:对象。 请注意,这是一个嵌套字典,每个数据字段中存储了数千个值。我有上面列出的26行结构。我试图将字典行附加到一个数据框中,其中我将只有一行

  • 我想对数据帧应用一个函数,该数据帧为原始数据集中的每一列返回几列。apply函数返回包含列和索引的DataFrame,但仍会引发错误ValueError:如果使用所有标量值,则必须传递索引。 我试着设置输出数据帧的名称,将列设置为多索引,并将索引设置为多索引,但都不起作用。 示例:我有这个输入数据帧 apply_函数如下所示: 这会引发错误: ValueError:如果使用所有标量值,则必须传递索