我有两个数据帧df1和df2。两者具有相同的行数但具有不同的列。 我想合并df1的所有列以及df2的第二列和第三列。
df1有119列,而df2有3列,我想要第二列和第三列
我正在使用的代码是:
data_train_test = pd.concat([df1,df2.iloc[:,
[2,3]]],axis=1,ignore_index=False)
我遇到的错误是
ValueError: Shape of passed values is (121, 39880), indices imply (121, 28898)
我的分析:
39880 - 28898 = 10982
df1是TFID数据帧,它是由其他两个数据帧的连接组成的,行17916 + 10982 = 28898。
我是如何制作df2的
frames = [data, prediction_data]
df2 = pd.concat(frames)
我无法找到此问题的确切原因。有人可以帮忙吗?
答案 0 :(得分:0)
我认为我是通过在创建df2时重置索引来解决的。
frames = [data, prediction_data]
df2 = pd.concat(frames).reset_index()
答案 1 :(得分:0)
我不确定我是否正确理解了您的问题,但我认为您想做的是:
data_train_test = pd.concat([df1,df2[[1,2]]])
.iloc[]
用于选择一行(数据帧索引中的第i行)。因此,您实际上并不需要它们。
答案 2 :(得分:0)
import pandas as pd
df1 = pd.DataFrame(data={'a':[0]})
df2 = pd.DataFrame(data={'b1':[1], 'b2':[2], 'b3':[3]})
data_train_test = pd.concat([df1,df2[df2.columns[1:3]]], axis=1)
# or
data_train_test = pd.concat([df1,df2.loc[:,df2.columns[1:3]]], axis=1)