python - pandas 合并与 ='outer' 和 pandas 追加方式之间的区别

标签 python python-3.x pandas

鉴于我有以下两个 pandas DataFrame:

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 可以在任意列上合并,但我想知道在这样的情况下使用一个相对于另一个是否有任何优势具体案例?

最佳答案

一个重要的区别是输出数据帧的索引。 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

关于python - pandas 合并与 ='outer' 和 pandas 追加方式之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49834067/

相关文章:

python-3.x - 在 Python 中使用文件夹时避免 for 循环

html - beautifulsoup - 当文本前面有 img 标签时, anchor 标签的过滤文本不起作用

python - 在python中将列的每个值从str转换为list

python - 如何使用 python 日志配置将参数传递给自定义日志格式化程序?

python /Django : Adding custom model methods?

python-3.x - 判断Python程序是否并行运行

python - 如何将具有值的二级类别列转换为多列

linux - 如何将 pandas 从 0.17.1 版本升级到更高版本?

python - 子图与neo4j和py2neo的缓慢合并

python - 如何使用 LABEL_COLUMN 作为连续基列修改 tensorflow 示例 "census"?