首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pandas -在多列中替换具有一定长度的字符串

Pandas -在多列中替换具有一定长度的字符串
EN

Stack Overflow用户
提问于 2019-03-07 05:45:29
回答 1查看 465关注 0票数 0

我有一个(n,m)维的dataframe,它的列是"dtype对象“,它有不同长度的字符串。df如下所示:

代码语言:javascript
运行
复制
      col1    col2    col3    col4    ...   colm
    |---------------------------------------------    
row1| str1,1  str1,2  str1,3  str1,4  ...   str1,m
row2| str2,1  str2,2  str2,3  str2,4  ...   str2,m
.   | .       .       .       .       ...   .
.   | .       .       .       .       ...   . 
.   | .       .       .       .       ...   .
rown| strn,1  strn,2  strn,3  strn,4  ...   strn,m

我希望将特定的字符串替换为NaN的字符串,条件是字符串的长度必须小于10,但仅限于某些列。

下面是我的代码:

代码语言:javascript
运行
复制
column_list = ['col1','col3']
df.loc[:,column_list] = df.apply(lambda x: x.str.replace(x,np.NaN) if len(x) < 10 else x)

代码运行时没有错误,但不幸的是,实际上并没有对这些列中的值做任何操作。我认为我的问题与以下部分有关:

代码语言:javascript
运行
复制
x.str.replace(x,np.NaN) 

我不认为"x“应该在”替换“函数中。

感谢你的帮助。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-07 05:57:35

在通过str.len获得字符串长度后,只需使用mask即可

代码语言:javascript
运行
复制
s=df.apply(lambda x : x.str.len())<10
df.loc[:,column_list]=df.loc[:,column_list].mask(s)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55032664

复制
相关文章

相似问题

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