python - 如何用另一个数据框的值替换数据框列中的一组值?
问题描述
我有两个数据框,一个带有一些缺失值,另一个带有需要替换缺失值的值。因此,第二个数据帧的长度比第一个短。
第一个数据帧中的缺失值由“未找到高度信息”或“未找到玩家信息”注明
有没有办法用第二个数据帧中的相应值替换第一个数据帧中的缺失值而不循环?
我尝试使用 .map() 但未替换的值返回 NaN。
filled_df['height']= filled_df['height'].astype(str) #dataframe with real values
main_df['height']= main_df['height'].astype(str) #dataframe with missing values
mapping = dict(filled_df[['name','height']].values)
main_df['height'] = main_df['url_names'].map(mapping,na_action='ignore')
print(main_df)
name url_names height
0 John Mcenroe John_Mcenroe Height Info Not Found
1 Jimmy Connors Jimmy_Connors Player Info Not Found
2 Ivan Lendl Ivan_Lendl 1.88 m (6 ft 2 in)
3 Mats Wilander Mats_Wilander 1.83 m (6 ft 0 in)
4 Andres Gomez Andres_Gomez 1.93 m (6 ft 4 in)
5 Anders Jarryd Anders_Jarryd 1.80 m (5 ft 11 in)
6 Henrik Sundstrom Henrik_Sundstrom 1.88 m (6 ft 2 in)
7 Pat Cash Pat_Cash Height Info Not Found
8 Eliot Teltscher Eliot_Teltscher 1.75 m (5 ft 9 in)
9 Yannick Noah Yannick_Noah 1.93 m (6 ft 4 in)
10 Joakim Nystrom Joakim_Nystrom 1.87 m (6 ft 2 in)
11 Aaron Krickstein Aaron_Krickstein 6 ft 2 in (1.88 m)
12 Johan Kriek Johan_Kriek 1.75 m (5 ft 9 in)
name height
0 John_Mcenroe 1.80
1 Jimmy_Connors 1.78
2 Pat_Cash 183
3 Jimmy_Arias 175
4 Juan_Aguilera 1.82
5 Henri_Leconte 1.84
6 Balazs_Taroczy 1.82
7 Sammy_Giammalva_Jr 1.78
8 Thierry_Tulasne 1.77
解决方案
这段代码可以完成这项工作
import pandas as pd
d = {'url_names': ['John_Mcenroe', 'Jimmy_Connors', 'Ivan_Lendl'], 'height': ['Height Info Not Found', 'Player Info Not Found', '1.88 m (6 ft 2 in)']}
main_df = pd.DataFrame(d)
d = {'url_names': ['John_Mcenroe', 'Jimmy_Connors'], 'height': ['1.80', '1.78']}
filled_df = pd.DataFrame(d)
df1 = main_df[(main_df.height == 'Height Info Not Found') | (main_df.height == 'Player Info Not Found')].drop(['height'], axis=1).merge(filled_df, on="url_names")
df2 = main_df[(main_df.height != 'Height Info Not Found') & (main_df.height != 'Player Info Not Found')]
pd.concat([df1, df2])
推荐阅读
- sql - 选择一组重复数据
- python - 尝试使用 buildozer 构建应用程序但返回错误,有人知道怎么了吗?
- python - 如何将字符串形式的字典列表与实际的字典列表相匹配?
- r - 使用 Case_when
- c - x86 程序集/C:尝试创建动态分配的数组时 SIGABRT 中止
- printing - Julia - 在解决最小化问题时抑制 Clp 优化器的输出
- python - 动态定义 __add__ (和其他魔术方法)
- sas - 在 SAS 中:多项选择变量的分析
- python - Buildozer 调试错误:“此版本中使用了已弃用的 Gradle 功能”
- c# - 更改匿名类型列表成员的值