将两个 pandas DataFrame 与一个唯一的列合并,并保留行索引 (Python)
Combine two pandas DataFrames with one unique column each and keep the row index (Python)
我试图将两个数据帧合并为一个。
每个数据框都有一个唯一的列名。
行索引可能在两个数据帧之间重叠,但也有唯一的。
这是一个例子:
df1 = pd.DataFrame({'ColumnA': [1, 2, 3, 4]}, index=['a', 'b', 'c', 'd'])
df2 = pd.DataFrame({'ColumnB': [5, 6, 7, 8]}, index=['a', 'b', 'e', 'f'])
我预计结果如下:
ColumnA ColumnB
a 1 5
b 2 6
c 3 NaN
d 4 NaN
e NaN 7
f NaN 8
我尝试了以下方法:
df1 = df1.merge(df2, left_index=True, right_index=True)
我也试过这个:
df1 = pd.concat([df1, df2], axis=1, sort=False)
两者都有结果,唯一的行都消失了。
有人可以帮我吗?
谢谢。
IIUC combine_first
或 join
df1.combine_first(df2)
ColumnA ColumnB
a 1.0 5.0
b 2.0 6.0
c 3.0 NaN
d 4.0 NaN
e NaN 7.0
f NaN 8.0
或
df1.join(df2,how='outer')
ColumnA ColumnB
a 1.0 5.0
b 2.0 6.0
c 3.0 NaN
d 4.0 NaN
e NaN 7.0
f NaN 8.0
您尝试了 merge 和 concat,但还有另一种方法。
运行:
df1.join(df2, how='outer')
df.merge
有一个参数 how
使用 'outer'
产生期望的结果。
df1.merge(df2, how='outer', left_index=True, right_index=True)
输出:
ColumnA ColumnB
a 1.0 5.0
b 2.0 6.0
c 3.0 NaN
d 4.0 NaN
e NaN 7.0
f NaN 8.0
我试图将两个数据帧合并为一个。 每个数据框都有一个唯一的列名。 行索引可能在两个数据帧之间重叠,但也有唯一的。
这是一个例子:
df1 = pd.DataFrame({'ColumnA': [1, 2, 3, 4]}, index=['a', 'b', 'c', 'd'])
df2 = pd.DataFrame({'ColumnB': [5, 6, 7, 8]}, index=['a', 'b', 'e', 'f'])
我预计结果如下:
ColumnA ColumnB
a 1 5
b 2 6
c 3 NaN
d 4 NaN
e NaN 7
f NaN 8
我尝试了以下方法:
df1 = df1.merge(df2, left_index=True, right_index=True)
我也试过这个:
df1 = pd.concat([df1, df2], axis=1, sort=False)
两者都有结果,唯一的行都消失了。
有人可以帮我吗? 谢谢。
IIUC combine_first
或 join
df1.combine_first(df2)
ColumnA ColumnB
a 1.0 5.0
b 2.0 6.0
c 3.0 NaN
d 4.0 NaN
e NaN 7.0
f NaN 8.0
或
df1.join(df2,how='outer')
ColumnA ColumnB
a 1.0 5.0
b 2.0 6.0
c 3.0 NaN
d 4.0 NaN
e NaN 7.0
f NaN 8.0
您尝试了 merge 和 concat,但还有另一种方法。
运行:
df1.join(df2, how='outer')
df.merge
有一个参数 how
使用 'outer'
产生期望的结果。
df1.merge(df2, how='outer', left_index=True, right_index=True)
输出:
ColumnA ColumnB
a 1.0 5.0
b 2.0 6.0
c 3.0 NaN
d 4.0 NaN
e NaN 7.0
f NaN 8.0