我有一个dataframe df1:
Month
1
3
March
April
2
4
5我还有另一个dataframe df2:
Month Name
1 January
2 February
3 March
4 April
5 May如果我想用来自df1的对应名称替换df2的整数值,我可以使用什么样的查找函数?
我想以这个作为我的df1结束:
Month
January
March
March
April
February
May发布于 2019-02-01 16:21:28
您可以使用pd.Series.map,然后使用fillna。只需小心地将字符串映射到字符串,或者,如这里所示,将数字映射为数字:
month_name = df2.set_index('Month')['Name']
df1['Month'] = pd.to_numeric(df1['Month'], errors='coerce').map(month_name)\
.fillna(df1['Month'])
print(df1)
Month
0 January
1 March
2 March
3 April
4 February
5 April
6 May您也可以使用pd.Series.replace,但这是常常低效。
发布于 2019-02-01 16:15:57
replace it
df1.replace(dict(zip(df2.Month.astype(str),df2.Name)))
Out[76]:
Month
0 January
1 March
2 March
3 April
4 February
5 April
6 May发布于 2019-02-01 16:12:09
一种选择是将地图与一个函数一起使用:
def repl(x, lookup=dict(zip(df2.Month.astype(str), df2.Name))):
return lookup.get(x, x)
df['Month'] = df['Month'].map(repl)
print(df)输出
Month
0 January
1 February
2 March
3 April
4 Mayhttps://stackoverflow.com/questions/54483079
复制相似问题