拆分数据集后使用自定义索引创建Pandas DataFrame时遭遇Shape不匹配ValueError的解决咨询
解决DataFrame创建时的Shape不匹配错误
嘿,我来帮你搞定这个问题!你遇到的ValueError是因为创建x_df时参数传错了位置,咱们一步步理清楚:
错误原因
你写的这段代码:
x_df = pd.DataFrame(X[i_train], df.columns[:-1].to_list())
这里的第二个参数df.columns[:-1].to_list()被pd.DataFrame()当成了**索引(index)**参数,但X[i_train]有159886行数据,而你传的索引列表只有291个元素(列名的数量),两者长度不匹配,所以就抛出了形状不匹配的错误。
解决方案
方法1:显式指定columns参数
把列名通过columns关键字参数传递,明确告诉构造函数这是列名而非索引:
x_df = pd.DataFrame(X[i_train], columns=df.columns[:-1].to_list())
这样构造函数就能正确识别参数,形状匹配后错误就消失了。
方法2:简化写法(推荐)
其实X本身已经包含了正确的列名,当你取X[i_train]这个子集时,它会自动继承原X的列名,所以你甚至可以不用手动传递列名,直接写:
x_df = pd.DataFrame(X[i_train])
这样既简洁又不会出错,完全满足你的需求。
小提醒
pd.DataFrame()的参数顺序是pd.DataFrame(data, index=None, columns=None, ...),如果不写关键字参数,第二个位置默认对应索引,以后要注意区分参数位置哦~
内容的提问来源于stack exchange,提问作者Sevval Kahraman
相关产品推荐
相关产品推荐

