堆叠数据帧的熊猫重塑数据

时间:2018-04-27 16:16:51

标签: python pandas

我尝试使用concat,append或merge来堆叠两个3列数据帧。结果是一个5列数据框,其中原始列的位置具有不同的顺序。以下是我尝试过的一些事情:

name_of_container:port

得到以下结果:

dfTrain = pd.read_csv("agr_hi_train.csv")
dfTrain2 = pd.read_csv("english/agr_en_train.csv")
dfTrain2.reset_index()
frames = [dfTrain, dfTrain2]
test = dfTrain2.append(dfTrain, ignore_index=True)
test2 = dfTrain2.append(dfTrain)
test3 = pd.concat(frames, axis=0, ignore_index=True)
test4 = pd.merge(dfTrain,dfTrain2, right_index=True, left_index=True)

输出是:

(20198,5) (20198,5) (11998,6) (8200,6) (8200,3) (11998,3)

我希望结果是:

(20198,3)#即最后两个堆叠在彼此之上。 。 。 任何想法为什么我得到额外的列等?

1 个答案:

答案 0 :(得分:0)

如果您有不同的列名,那么您的追加将分隔列。例如:

dfTrain = pd.DataFrame(np.random.rand(8200, 3), columns=['A', 'B', 'C'])
dfTrain2 = pd.DataFrame(np.random.rand(11998, 3), columns=['D', 'E', 'F'])
test = dfTrain.append(dfTrain2)
print(test)

有输出:

          A         B         C         D         E         F
0      0.617294  0.507264  0.330792       NaN       NaN       NaN
1      0.439806  0.355340  0.757864       NaN       NaN       NaN
2      0.740674  0.332794  0.530613       NaN       NaN       NaN
...
20195       NaN       NaN       NaN  0.295392  0.621741  0.255251
20196       NaN       NaN       NaN  0.096586  0.841174  0.392839
20197       NaN       NaN       NaN  0.071756  0.998280  0.451681

如果您重命名两个数据框中的列以匹配,那么它将排成一行。

dfTrain2.columns = ['A','B','C']
test2 = dfTrain.append(dfTrain2)
print(test2)

          A         B         C
0      0.545936  0.103332  0.939721
1      0.258807  0.274423  0.262293
2      0.374780  0.458810  0.955040
...
[20198 rows x 3 columns]