如何一次从熊猫的所有列中删除逗号
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.replace
和regex=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中删除多个全局二级索引?