用其他数据框中的值替换值

时间:2020-07-16 15:06:10

标签: python pandas

我有两个数据框:

df1:

enter image description here

df2:

enter image description here

我想用df1值更新df2以创建:

enter image description here

用于在下面生成示例数据帧的代码:

import pandas as pd

test_dict = {'Customer': ['A', 'B', 'C'], 'Last Accessed': ['7/16/2020','7/5/2020', '7/1/2020']}
df1 = pd.DataFrame.from_dict(test_dict)

test_dict = {'Customer': ['A', 'B', 'C', 'D', 'E', 'F'], 'Date Accessed': ['5/15/2020','5/15/2020', '5/15/2020', '5/15/2020', '5/15/2020', '5/15/2020']}
df2 = pd.DataFrame.from_dict(test_dict)

3 个答案:

答案 0 :(得分:3)

让我们先尝试concat然后尝试drop_duplicates

df = pd.concat([df1.rename(columns={'Last Accessed':'Date Accessed'}),df2]).drop_duplicates('Customer')
Out[81]: 
  Customer Date Accessed
0        A     7/16/2020
1        B      7/5/2020
2        C      7/1/2020
3        D     5/15/2020
4        E     5/15/2020
5        F     5/15/2020

答案 1 :(得分:3)

使用merge + fillna

df = df2.merge(df1, on='Customer', how='left')
df['Date Accessed'] = df.pop('Last Accessed').fillna(d['Date Accessed'])

结果:

  Customer Date Accessed
0        A     7/16/2020
1        B      7/5/2020
2        C      7/1/2020
3        D     5/15/2020
4        E     5/15/2020
5        F     5/15/2020

答案 2 :(得分:3)

您可以在combine_first列之后使用rename

df1.rename(columns={'Last Accessed':'Date Accessed'}).combine_first(df2)

输出:

  Customer Date Accessed
0        A     7/16/2020
1        B      7/5/2020
2        C      7/1/2020
3        D     5/15/2020
4        E     5/15/2020
5        F     5/15/2020