如何一次从熊猫的所有列中删除逗号

Posted

技术标签:

【中文标题】如何一次从熊猫的所有列中删除逗号【英文标题】: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')

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

【问题讨论】:

【参考方案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 的问题。所以这没有帮助。

以上是关于如何一次从熊猫的所有列中删除逗号的主要内容,如果未能解决你的问题,请参考以下文章

如何从熊猫数据框中的列中删除字符串值

如何一次从CloudFormation中删除多个全局二级索引?

一次从平衡二叉树中删除多个项目

如何从包含特定列中特定字符串的熊猫数据框中删除行? [复制]

如何在熊猫 DF 列中删除连续的相似数字

熊猫在列中使用额外的逗号读取 csv