【问题标题】:How to remove commas from ALL the column in pandas at once如何一次从熊猫的所有列中删除逗号
【发布时间】:2019-11-18 16:50:06
【问题描述】:

我有一个数据框,其中所有列都应该是数字。在阅读时,其中一些是用逗号阅读的。我知道可以通过

修复单个列
df['x']=df['x'].str.replace(',','')

但是,这仅适用于系列对象,不适用于整个数据框。是否有一种优雅的方式将其应用于整个数据帧,因为数据帧中的每个条目都应该是一个数字。

P.S:为了确保我可以 str.replace,我首先将数据框转换为 str 使用

df.astype('str')

所以我明白,一旦删除逗号,我将不得不将它们全部转换为数字。

【问题讨论】:

    标签: python string pandas replace comma


    【解决方案1】:

    数值列没有,,因此不需要转换成字符串,只使用DataFrame.replaceregex=True进行子字符串替换:

    df = df.replace(',','', regex=True)
    

    或者:

    df.replace(',','', regex=True, inplace=True)
    

    最后将字符串列转换为数字,谢谢@anki_91:

    c = df.select_dtypes(object).columns
    df[c] = df[c].apply(pd.to_numeric,errors='coerce')
    

    【讨论】:

    • 这里需要regex=True 吗?我想我错过了什么
    • 好的,知道了:to_replace: [...], str: string **exactly** matching to_replace will be replaced with value
    • 谢谢@Jezrael。这很好用。我永远不会自己想出将字符串列转换为数字的最后一部分!
    • 当我尝试用同样的方法替换 dot 时,这一行正在用空值替换所有单元格并得到一个空数据框。 df.replace('.' , '' , regex=True, inplace=True)。为什么是 '。'与每个条目匹配?
    • @SuperUser - 你可以查看this
    【解决方案2】:

    嗯,你可以简单地做:

    df = df.apply(lambda x: x.str.replace(',', ''))
    

    希望对你有帮助!

    【讨论】:

      【解决方案3】:

      如果您只想操作一列:

      df.column_name = df.column_name.apply(lambda x : x.replace(',',''))
      

      【讨论】:

      • OP 在展示了一种仅操作一列的方法之后,明确询问了有关操作整个 DataFrame 的问题。所以这没有帮助。
      猜你喜欢
      • 2020-12-03
      • 2019-06-20
      • 2021-09-10
      • 2020-08-23
      • 2019-08-13
      • 1970-01-01
      • 1970-01-01
      • 2022-06-16
      • 1970-01-01
      相关资源
      最近更新 更多