在python中连接两个df时,为什么在使用np.hstack时会丢失索引和列标题信息?

时间:2019-11-01 19:10:03

标签: pandas numpy dataframe concat

我有两个数据框: 提醒:

DF1

X
Yes
No
Maybe

DF2

Y
Yes
No
Maybe

import pandas as pd
import numpy as np
train = pd.DataFrame(np.hstack([DF1,DF2]))

火车

0 1
Yes Yes
No  No
Maybe Maybe

为什么我的标头从X和Y更改。traindf应该保留两个df的原始标头。我尝试使axis = 1和headers = true,但没有用。 pd.concat无效,因为我最终得到的行比原始df中的行多。

我也尝试过

df.reset_index()

但是即使在那之后,pd.concat给我的行也比原始的两个数据帧多。

1 个答案:

答案 0 :(得分:0)

原因是 Numpy 方法无法在DataFrame上运行, 但在基础 Numpy 数组上,没有任何索引或 列数据(行和列名称的索引)。

要对此进行检查,请运行:np.hstack([DF1, DF2]),您将获得:

array([['Yes', 'Yes'],
       ['No', 'No'],
       ['Maybe', 'Maybe']], dtype=object)

要保留列名,请使用例如:

pd.concat([DF1, DF2], axis=1)

这次结果将是:

       X      Y
0    Yes    Yes
1     No     No
2  Maybe  Maybe