首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Python DataFrames中查找?

在Python DataFrames中查找?
EN

Stack Overflow用户
提问于 2019-02-01 16:06:26
回答 4查看 46关注 0票数 0

我有一个dataframe df1:

代码语言:javascript
运行
复制
Month

1
3
March
April
2
4
5

我还有另一个dataframe df2:

代码语言:javascript
运行
复制
Month  Name

1       January
2       February
3       March
4       April
5       May

如果我想用来自df1的对应名称替换df2的整数值,我可以使用什么样的查找函数?

我想以这个作为我的df1结束:

代码语言:javascript
运行
复制
    Month

January
March
March
April
February
May
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-02-01 16:21:28

您可以使用pd.Series.map,然后使用fillna。只需小心地将字符串映射到字符串,或者,如这里所示,将数字映射为数字:

代码语言:javascript
运行
复制
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,但这是常常低效

票数 3
EN

Stack Overflow用户

发布于 2019-02-01 16:15:57

replace it

代码语言:javascript
运行
复制
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
票数 5
EN

Stack Overflow用户

发布于 2019-02-01 16:12:09

一种选择是将地图与一个函数一起使用:

代码语言:javascript
运行
复制
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)

输出

代码语言:javascript
运行
复制
      Month
0   January
1  February
2     March
3     April
4       May
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54483079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档