我想要垂直连接两个数据框,但我不知道为什么它通过['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