Concat数据框不起作用

时间:2018-07-05 16:07:36

标签: python python-3.x pandas concat

我有两个数据帧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)

我无法找到此问题的确切原因。有人可以帮忙吗?

3 个答案:

答案 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)