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

时间:2016-04-23 16:31:17

标签: python pandas

第1部分

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

Sample column A
1000
2000
3000
-
1000

第2部分

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

2 个答案:

答案 0 :(得分:1)

第1部分

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

请参阅文档here

第2部分

正如MaxU早先建议的那样,您可以像这样使用.replace()

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

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

希望这有帮助!

答案 1 :(得分:0)

您可以遍历列。

选定栏目:

>>> 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