我有两个数据框:
df1:
df2:
我想用df1值更新df2以创建:
用于在下面生成示例数据帧的代码:
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)
答案 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