我有两个pandas数据帧。
noclickDF = DataFrame([[0,123,321],[0,1543,432]], columns=['click', 'id','location'])
clickDF = DataFrame([[1,123,421],[1,1543,436]], columns=['click', 'location','id'])
我只是想加入,以便最终的DF看起来像:
click | id | location
0 123 321
0 1543 432
1 421 123
1 436 1543
正如您所看到的,两个原始DF的列名相同,但顺序不同。此外,列中没有连接。
答案 0 :(得分:29)
您也可以使用pd.concat:
In [36]: pd.concat([noclickDF, clickDF], ignore_index=True)
Out[36]:
click id location
0 0 123 321
1 0 1543 432
2 1 421 123
3 1 436 1543
在幕后,DataFrame.append
拨打pd.concat
。
DataFrame.append
具有处理各种输入类型的代码,例如Series,tuples,lists和dicts。如果您将其传递给DataFrame,它会直接传递到pd.concat
,因此使用pd.concat
会更直接。
答案 1 :(得分:5)
For future users (sometime >pandas 0.23.0):
You may also need to add sort=True to sort the non-concatenation axis when it is not already aligned (i.e. to retain the OP's desired concatenation behavior). I used the code contributed above and got a warning, see Python Pandas User Warning的最佳方法。下面的代码有效,并且不会引发警告。
In [36]: pd.concat([noclickDF, clickDF], ignore_index=True, sort=True)
Out[36]:
click id location
0 0 123 321
1 0 1543 432
2 1 421 123
3 1 436 1543
答案 2 :(得分:3)
你可以使用追加
df = noclickDF.append(clickDF)
print df
click id location
0 0 123 321
1 0 1543 432
0 1 421 123
1 1 436 1543
如果需要,可以通过
重置索引df.reset_index(drop=True)
print df
click id location
0 0 123 321
1 0 1543 432
2 1 421 123
3 1 436 1543