【发布时间】:2021-04-07 18:00:12
【问题描述】:
我有 2 个具有多列的 pandas 数据框。
除了一列是updated_at之外,一些行在所有列中都有相同的值。
我需要合并 2 个数据框并考虑匹配行中的最新 updated_at 值。 updated_at 是一个日期时间值。
我找到了一种合并数据框的方法,但不确定如何使用 updated_at 列的最新值。
pd.merge(
df1,
df2,
how="inner",
on=["column_1", "column_2", "column_3"])
这是df1 和df2 的示例输入。
df1:
MRN Encounter ID First Name Last Name Birth Date updated_at
1 1234 John Doe 01/02/1999 04/12/2002 6:00 PM
2 2345 Joanne Lee 04/19/2002 04/19/2002 7:22 PM
3 3456 Annabelle Jones 01/02/2001 04/21/2002 5:00 PM
df2:
MRN Encounter ID First Name Last Name Birth Date updated_at
1 1234 John Doe 01/02/1999 04/12/2002 5:00 PM
2 2345 Joanne Lee 04/19/2002 04/19/2002 8:22 PM
final_output:
MRN Encounter ID First Name Last Name Birth Date updated_at
1 1234 John Doe 01/02/1999 04/12/2002 6:00 PM
2 2345 Joanne Lee 04/19/2002 04/19/2002 8:22 PM
3 3456 Annabelle Jones 01/02/2001 04/21/2002 5:00 PM
请注意,updated_at 列具有来自匹配记录的最新值。
【问题讨论】:
-
这取决于
latest的值,对吧?其余的只是合并并决定保留哪一个(来自 df1 或 df2)。 df2 是否总是将“updated_at”视为“最新”? -
df2并不总是具有最新的updated_at值。有时它可能在df1的匹配行中。 -
我认为您需要详细说明输入和预期输出。否则,它涉及很多猜测。检查这个stackoverflow.com/questions/20109391/…
-
更新了输入和预期输出的问题。
-
你见过这个解决方案吗stackoverflow.com/questions/24614474/…
标签: python python-3.x pandas dataframe pandas-groupby