Pandas连接失败,显示为NaN



我想要垂直连接两个数据框,但我不知道为什么它通过['data_label']连接并生成NaN?

print(leakage_data1)
0    1    2   data_label
0  0.2  0.1  0.7      0
1  0.5  0.6  0.4      0

print(noise_data1)
0    1    2   data_label
0  0.9  0.8  1.0      1
1  0.7  0.5  0.1      1

我使用model1_TestData = pd.concat([leakage_data1, noise_data1], axis=0, ignore_index=True)
得到

print(model1_TestData)
0    1    2   data_label   0    1    2
0  0.2  0.1  0.7      0       NaN  NaN  NaN
1  0.5  0.6  0.4      0       NaN  NaN  NaN
2  NaN  NaN  NaN      1       0.9  0.8  1.0
3  NaN  NaN  NaN      1       0.7  0.5  0.1

如何解决这个问题?

检查列名上的数据类型。如果一个df有一个字符串列名'1',另一个是1,它会在屏幕上打印出相同的,但会给你你看到的错误,因为要连接你必须有完全相同的列名和1!= ' 1 '

model1_TestData.columns

应该显示类似Index(['0', '1',..., 0, 1], dtype='object')

的东西

你只需要使用

df.merge(df1, right_index = True, left_index = True)

当你使用axis =0时,你实际上是告诉它通过行而不是列来做…除非你想这样做,所以你想让你的数据更垂直而不是水平?

应该可以:

df1 = pd.DataFrame({0:[.2, .5], 1:[.1, .6], 2:[.7, .4], 'data_label':0})
df2 = pd.DataFrame({0:[.9, .7], 1:[.8, .5], 2:[1., .1], 'data_label':1})
print(pd.concat([df1, df2]))

结果:

0    1    2  data_label
0  0.2  0.1  0.7           0
1  0.5  0.6  0.4           0
0  0.9  0.8  1.0           1
1  0.7  0.5  0.1           1

最新更新