【发布时间】:2021-09-22 11:06:41
【问题描述】:
我想合并两个数据帧并从第二个数据帧更新第一个数据帧中的值。
我需要将data2 中的所有值添加到data1,如果username 已存在于data1 中,我需要将amount 值从data2 更新。
import pandas as pd
data1 = pd.DataFrame([['user1', 10], ['user2', 11], ['user3', 12],['user4',10]], columns=['username', 'amount'])
data2 = pd.DataFrame([['user4', 15], ['user5', 60]], columns=['username', 'amount'])
#Desired dataframe:
data3= pd.DataFrame([['user1', 10], ['user2', 11], ['user3', 12],['user4',15], ['user5', 60]],columns=['username', 'amount'])
我想更新两个数据框中存在的值,如果它们不在第一个数据框中,则添加新行:
Dataframes:
data1:
username amount
0 user1 10
1 user2 11
2 user3 12
3 user4 10
data2:
username amount
0 user4 15
1 user5 60
data3: (Desired dataframe)
username amount
0 user1 10
1 user2 11
2 user3 12
3 user4 15
4 user5 60
我尝试了 Concat、Merge、Update、Join,但无法让它们以我想要的方式工作。
连接:
print('Concat:')
df_concat = pd.concat([data1, data2], axis=0, join='outer', ignore_index='true', verify_integrity='True')
display(df_concat)
username amount
0 user1 10
1 user2 11
2 user3 12
3 user4 10
4 user4 15
5 user5 60
合并:
print('Merge:')
df_merge = data1.merge(data2,how='outer', on='username',indicator = True)
display(df_merge)
username amount_x amount_y _merge
0 user1 10.0 NaN left_only
1 user2 11.0 NaN left_only
2 user3 12.0 NaN left_only
3 user4 10.0 15.0 both
4 user5 NaN 60.0 right_only
更新:
print('Update:')
data1.update(data2)
display(data1)
username amount
0 user4 15.0
1 user5 60.0
2 user3 12.0
3 user4 10.0
加入:
print('Join:')
data1.join(data2, how='outer', lsuffix='username', rsuffix='amount')
display(data1)
username amount
0 user1 10
1 user2 11
2 user3 12
3 user4 10
如何从 data1 和 data2 中获取所需的数据帧 data3?
【问题讨论】:
标签: python pandas dataframe merge