Python 如何连接两个数据帧,但在发生冲突时仅从一个数据帧中获取值?
我有两个数据帧: 1: 1: 我想连接它们,但当索引相同时,第一个优先。所以我想得到:Python 如何连接两个数据帧,但在发生冲突时仅从一个数据帧中获取值?,python,pandas,Python,Pandas,我有两个数据帧: 1: 1: 我想连接它们,但当索引相同时,第一个优先。所以我想得到: col1 col2 a a1 a2 b b1 b2 c c1 c2 我找不到一个简单的方法来做这件事。有什么想法吗?与“按索引选择第一个重复行”一起使用: df = pd.concat([df1, df2]) df = df[~df.index.duplicated()] print (df) col1 col2 a a1 a2 b b1 b
col1 col2
a a1 a2
b b1 b2
c c1 c2
我找不到一个简单的方法来做这件事。有什么想法吗?与“按索引选择第一个重复行”一起使用:
df = pd.concat([df1, df2])
df = df[~df.index.duplicated()]
print (df)
col1 col2
a a1 a2
b b1 b2
c c1 c2
您可以先使用
combine\u
:
import pandas as pd
df1 = pd.DataFrame([['a1', 'a2'], ['b1', 'b2']], index=['a', 'b'], columns=['col1', 'col2'])
df2 = pd.DataFrame([['b3', 'b4'], ['c1', 'c2']], index=['b', 'c'], columns=['col1', 'col2'])
df1.combine_first(df2)
# col1 col2
# a a1 a2
# b b1 b2
# c c1 c2
嘿谢谢你的回答。这是否总是保留来自第一个数据帧的值?是的,如果索引中存在重复项。这在我的数据集上似乎不起作用。也许还有别的地方出了问题。似乎没有删除重复的标记。是数据机密吗?谢谢你的回答,但这似乎对我的实际数据集也不起作用。我仍然有两个“b”行的等价项。我猜肯定还有别的地方出错了,所以问题是一个索引保存为字符串,另一个保存为整数。无论如何,非常感谢!
df = pd.concat([df1, df2])
df = df[~df.index.duplicated()]
print (df)
col1 col2
a a1 a2
b b1 b2
c c1 c2
import pandas as pd
df1 = pd.DataFrame([['a1', 'a2'], ['b1', 'b2']], index=['a', 'b'], columns=['col1', 'col2'])
df2 = pd.DataFrame([['b3', 'b4'], ['c1', 'c2']], index=['b', 'c'], columns=['col1', 'col2'])
df1.combine_first(df2)
# col1 col2
# a a1 a2
# b b1 b2
# c c1 c2