鉴于我有以下两个pandas DataFrame
s:
df1 = pd.DataFrame({'A':['a', 'b', 'c'], 'B':[1,2,3]})
df2 = pd.DataFrame({'A':['d', 'e', 'f'], 'C':[4,5,6]})
之间有什么区别
df1.merge(df2, how='outer')
和
df1.append(df2)
虽然结果DataFrame
在两种情况下是相同的,尽管on可以在任意列上合并,但我想知道在这种特定情况下是否有任何优势使用它?
答案 0 :(得分:1)
一个重要的区别是输出数据帧的索引。
在append
重新分配新索引时,merge
将保留原始索引。
看那个例子:
import pandas as pd
df = pd.DataFrame({"a": [1,2,3], "b": ["alpha", "beta", "gamma"]})
df2 = pd.DataFrame({"c": [4,5,6], "b": ["epsilon", "delta", "omega"]})
df.append(df2)
返回:
a b c
0 1.0 alpha NaN
1 2.0 beta NaN
2 3.0 gamma NaN
0 NaN epsilon 4.0
1 NaN delta 5.0
2 NaN omega 6.0
虽然:
df.merge(df2, how="outer")
返回:
a b c
0 1.0 alpha NaN
1 2.0 beta NaN
2 3.0 gamma NaN
3 NaN epsilon 4.0
4 NaN delta 5.0
5 NaN omega 6.0