代码之家  ›  专栏  ›  技术社区  ›  roberto.sannazzaro

数据帧中的.replace()不替换

  •  -1
  • roberto.sannazzaro  · 技术社区  · 7 年前

    我想把它移走 ; 从数据帧中的列,但当我使用 .replace(';', ' ') 方法它不替换分号,我是这样做的:

    for i in excel_file['dateTime']:
        i.replace(';', ' ')
    

    这就是我的 'dateTime' 列的外观如下:

    11-06-18;
    18-06-18;
    18-09-18;
    14-06-18;
    20-06-18;
    13-06-18;
    21-06-18;
    19-06-18;
    19-06-18;
    20-06-18;
    11-06-18;
    22-06-18;
    
    2 回复  |  直到 7 年前
        1
  •  6
  •   John Zwinck    7 年前

    不使用 for 循环。相反:

    excel_file['dateTime'] = excel_file['dateTime'].str.replace(';', ' ')
    

    在这个答案中隐含的事实是 str.replace() 返回新字符串,而不是就地修改原始字符串。这就是原始代码中的功能缺陷。但是没有 对于 循环会快很多倍。

    裁判: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.replace.html

        2
  •  0
  •   Ignis    7 年前

    如果你使用 .replace(';', ' ') 在某些字符串上-它将 带替换的新字符串。 所以你需要:

    for i in excel_file['dateTime']:
        excel_file['dateTime'][i] = i.replace(';', ' ')  # probably
    

    如果你需要更换的话。但@john zwinck也为您的案件提出了更好的解决方案