【发布时间】:2017-09-01 07:40:39
【问题描述】:
我有 2 个具有相同列的数据框。我想在一个键列上合并(或连接)这些数据帧,如果两者之间存在键匹配,它只会更新匹配行的单个列,否则它将行附加到第一个/旧数据帧。
示例伪代码:
for row in new_dataset:
if new_dataset['key'] == old_dataset['key']:
old_dataset['last_seen'] = new_dataset['last_seen']
else:
append row to old_dataset
示例输入:
DF1
Key First_Seen Last_Seen Data Data
Bigfoot 2015 2015 Blah Blah
Loch_Ness 2016 2016 Blah Blah
UFO 2016 2004 Blah Blah
DF2
Key First_Seen Last_Seen Data Data
UFO 2017 2017 Blah Blah
Tupac 2017 2017 Blah Blah
期望的输出:
DF3
Key First_Seen Last_Seen Data Data
Bigfoot 2015 2015 Blah Blah
Loch_Ness 2016 2016 Blah Blah
UFO 2016 2017 Blah Blah
Tupac 2017 2017 Blah Blah
编辑:我尝试了几种方法,包括:将键作为索引加入,在键上进行右合并,显式调用列,然后向左合并以附加不匹配的值。我面临的问题是合并要么想要合并所有列,并创建一个完全重复的 df,要么当我显式调用列时,它不允许匹配数据框的 pandas 系列。当我规范化为在列调用上使用 2 系列时,我无法返回匹配合并的特定行等。
【问题讨论】:
-
pd.concat然后drop_duplicate -
那没有正确更新first_seen和last_seen列,会有数据丢失
-
欢迎来到 Stack Overflow,@itotallyforgot。对于那些希望为您提供答案以了解您已经尝试过的内容以及它如何无法正常工作的人来说,这可能会有所帮助。
-
@Degan 我已经用我尝试过的一些东西更新了它。
-
@Wen was correct!几乎...不太...UFO需要2016 2017在其行中。
标签: python-3.x pandas