熊猫:无法从CSV中的数字中删除“ - ”

时间:2017-12-31 14:38:02

标签: python pandas

我有以下问题,我有两个单独的python脚本。 第一个将CSV文件转换为新格式(删除某些列并删除美元符号)

单独的脚本会读取所有已转换的CSV文件,并从中创建单个大型脚本,按特定键对数据进行分组。

所有这些都运行得很好,除了我一直遇到以下问题。

两个文件 Money Out 中的一列有时包含以' - '开头的值(-235.93)。我想从文件中删除此符号。

我在两个脚本中都放了以下代码,但我无法删除该符号。 数据有时是数字,有时是字符串。我认为将它统一为字符串并使用'替换'方法可以解决问题,但它没有。我也用pandas方法构建,但无济于事。

df['Money Out'] = df['Money Out'].astype(str)
df['Money Out'] = df['Money Out'].replace('-', '')
df['Money Out'].replace('-', '', inplace=True)

有没有人知道我可能做错了什么?

2 个答案:

答案 0 :(得分:1)

尝试这样做

df['Money Out'] = df.apply(lambda r: ("%s"%(r['Money Out'] or "0.0")).replace("-",""), axis=1)

答案 1 :(得分:1)

您的代码:

df['Money Out'].replace('-', '', inplace=True)

正在使用Series.replace这是一个与Series.str.replace函数不同的东西(替换列的完全匹配或具有值的正则表达式)(更传统的替换a substring出现在另一个地方),你可以使用:

df['Money Out'] = df['Money Out'].str.replace('-', '')

删除文字中的任何连字符。