繁体   English   中英

从一系列列中的字符串中删除不需要的部分

[英]Remove unwanted parts from strings in a range of columns

第1部分

与此问题类似,但我有一系列名为A-J的列,所有这些列都有连字符来代替带有数字值的Series上的NaN(请参见下面的示例)。 我如何替换所有这些,而不是一次如该答案所示遍历每一列。

Sample column A
1000
2000
3000
-
1000

第2部分

有没有办法使用正则表达式删除所有'-',',','。' 从数据帧?

第1部分

在将数据读入DataFrame时,可以将'-'定义为NaN值。 更具体地说,是na_valuespd.read_csv()调用中使用na_values来实现的。

在这里查看文档

第2部分

正如MaxU先前建议的那样,您可以使用.replace()如下所示:

df.replace(r'[\s\-,\.]+', r'', regex=True, inplace=True)

请注意,这对非字符串不会有任何影响。

希望这可以帮助!

您可以遍历各列。

选定的列:

>>> df = pd.DataFrame({'a': ['a-b', 'c-d'], 'b': ['x-y', 'z-z'], 'c': ['x-y', 'z-z']})
>>> df
     a    b    c
0  a-b  x-y  x-y
1  c-d  z-z  z-z
>>> for col_name in 'ab':
        df[col_name] = df[col_name].str.replace('-', '0')
>>> df
     a    b    c
0  a0b  x0y  x-y
1  c0d  z0z  z-z

所有列:

>>> df = pd.DataFrame({'a': ['a-b', 'c-d'], 'b': ['x-y', 'z-z'], 'c': ['x-y', 'z-z']})

>>> for col_name in df.columns:
        df[col_name] = df[col_name].str.replace('-', '0')
>>> df
     a    b    c
0  a0b  x0y  x0y
1  c0d  z0z  z0z

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM