python - 我们如何用合并操作后找到的数据更新相似列的行中的列数据?
问题描述
我可以使用连接功能找到相等的列数据。但我还有其他事情要做。例如; 如果第二个文件中的“客户ID”的值等于第一个文件中的客户ID;我想将第一个文件中“客户id”列相等的行的“客户评价”列中的值保存在同一行的“客户评价”列中。
pd.merge(first_file_data,second_file_data,left_on='CUSTOMER ID',right_on='CUSTOMER ID')
输出:
合并交易中的类似客户 ID:
第一个文件
CUSTOMER ID CUSTOMER SCORE
0 3091250 Nan
1 1122522 Nan
SECOND_FİLE
CUSTOMER ID CUSTOMER SCORE
0 3091250 750
1 1122522 890
解决方案
你可以使用df.fillna()
函数。只需在df1
和上设置相同的索引df2
:
out = df1.set_index('CUSTOMER_ID').fillna(df2.set_index('CUSTOMER_ID')).reset_index()
print(out)
印刷:
CUSTOMER_ID CUSTOMER_SCORE
0 3091250 750.0
1 1122522 890.0
编辑:仅在 df1 的一行中替换 NaN:
df1['CUSTOMER_SCORE'] = df1.set_index('CUSTOMER_ID')['CUSTOMER_SCORE'].fillna(df2.set_index('CUSTOMER_ID')['CUSTOMER_SCORE']).values
print(df1)
印刷:
CUSTOMER_ID CUSTOMER_SCORE
0 3091250 750.0
1 1122522 890.0
推荐阅读
- powershell - 需要对 Web 请求响应中的值进行排序
- javascript - Javascript 函数返回对象,其中包含 3 个函数定义,但 IntelliSense 不适用于该返回类型
- jestjs - Jest tests crash when due to @babylon/core es6 syntax
- java - 尝试在 Android Studio 中成功运行项目?
- python - pytrends 返回“请求”KeyError
- flutter - Flutter:将列中文本的宽度限制为其他子项的宽度
- reactjs - Strapi 没有在 GraphQL 上显示两种内容类型
- r - 如何使用因子变量作为ggplot2的背景颜色进行绘图?
- javascript - 当值在使用nodejs的对象中包含空时如何获取键名
- postgresql - 如何在 pgAdmin 中填充类型为“带时区的时间戳”的列作为 unix 时间?