首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在熊猫中大写字符串列

在熊猫中大写字符串列
EN

Stack Overflow用户
提问于 2018-05-28 07:41:28
回答 3查看 2.8K关注 0票数 0

如何以最简单的方式替换多个版本?

这是我的数据:

代码语言:javascript
复制
No  Device
1   asus
2   Xiaomi
3   xiaomi
4   Asus
5   Samsung

我想做的是:

代码语言:javascript
复制
No  Device
1   Asus
2   Xiaomi
3   Xiaomi
4   Asus
5   Samsung

我所做的是:

代码语言:javascript
复制
f = {'xiaomi':'Xiaomi', 'asus':'Asus'}
df['Device'] = df['Device'].map(f)

但结果是:

代码语言:javascript
复制
No  Device
1   Asus
2   NaN
3   Xiaomi
4   NaN
5   NaN
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-28 07:56:00

你需要的不是映射而是replacing

代码语言:javascript
复制
df['Device'] = df['Device'].replace(f)

0       Asus
1     Xiaomi
2     Xiaomi
3       Asus
4    Samsung
Name: Device, dtype: object

​
票数 3
EN

Stack Overflow用户

发布于 2018-05-28 07:43:46

为什么不直接和str.title一起去

代码语言:javascript
复制
df['Device'] = df.Device.str.title()  
df

   No   Device
0   1     Asus
1   2   Xiaomi
2   3   Xiaomi
3   4     Asus
4   5  Samsung

没有必要以这种方式进行任何映射或字典。

票数 6
EN

Stack Overflow用户

发布于 2018-05-28 07:42:12

如果需要,添加fillnacombine_firstdictionarymap

代码语言:javascript
复制
df['Device'] = df['Device'].map(f).fillna(df['Device'])

或者:

代码语言:javascript
复制
df['Device'] = df['Device'].map(f).combine_first(df['Device'])

或者只使用str.capitalize,如果只需要大写大写字母:

代码语言:javascript
复制
print (df)
   No     Device
0   1  asus best
1   2     Xiaomi
2   3     xiaomi
3   4       Asus
4   5    Samsung

df['Device'] = df['Device'].str.capitalize()
print (df)
   No     Device
0   1  Asus best
1   2     Xiaomi
2   3     Xiaomi
3   4       Asus
4   5    Samsung
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50561412

复制
相关文章

相似问题

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