Python 获取错误:";ValueError:如果使用所有标量值,则必须传递一个索引";将ndarray转换为数据帧时
按照以下代码将多个Python 获取错误:";ValueError:如果使用所有标量值,则必须传递一个索引";将ndarray转换为数据帧时,python,pandas,numpy,Python,Pandas,Numpy,按照以下代码将多个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.repea
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:如果使用所有标量值,则必须传递索引
基于,参数索引
输入如下
df=pd.DataFrame (
{'sub_iti': sub_iti,
'tw': tw,
'col_iti': col_iti},index=range(0,3*2) )
但是,编译器返回diff rent错误
例外:数据必须是一维的
我可以知道如何解决这个问题吗?您所有的
sub\u iti、tw、col\u iti
都是2D numpy阵列。但是,当您这样做时:
df=pd.DataFrame ({'sub_iti': sub_iti,
'tw': tw,
'col_iti': col_iti} )
Pandas希望它们是1D
numpy数组或列表,因为数据帧的列应该是这样的。您可以尝试:
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]
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()
:
输出:
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]
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
您是否尝试过使用dict中的pd.DataFrame?感谢@swagless_monk的建议,但它返回
ValueError:必须通过二维输入
再加上ravel上的一个