首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas.to_numeric问题

Pandas.to_numeric问题
EN

Stack Overflow用户
提问于 2021-06-29 16:08:46
回答 2查看 253关注 0票数 0

我有一个CSV文件,当在记事本中打开时,它显示以下格式:

。如您所见,它只是一个包含2个值的1列文件,但是当将该文件作为df = pd.read_csv(f)读入熊猫时,实际文件中没有逗号,它将金额值视为字符串。由于我试图将这两个70个值转换为浮点数,所以我使用df['Amount'] = pd.to_numeric(df['Amount'])df.to_excel(newfile, index = False),但是它返回一个空白的5kb excel文件。我将errors="ignore"添加到pd.to_numeric中,它将两个70个值作为字符串返回。当使用errors="coerce"时,它在控制台中返回NaN值。

我认为问题在于CSV文件本身的格式。虽然当原始文件在记事本中打开时,它在右下角显示为一个CRLF文件,但我相信它首先是一个Unix LF文件,并且使用Excel刚刚打开、保存和关闭,迫使从LF到CRLF的更改。如有任何指导,将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-29 16:48:04

我认为美元符号在转换为浮动时的问题:

代码语言:javascript
复制
import pandas as pd
df = pd.read_csv('data.txt')
pd.to_numeric(df['Amount'])

ValueError:无法解析0位置的字符串"($70.00)“

在我去掉美元标志和方括号后,它对我起了作用。

代码语言:javascript
复制
df["Amount"] = df["Amount"].replace(regex={r'[$\)]': '', '[\(]': '-'}).astype(float)
print(df['Amount'])

0 -70.0

1 70.0

名称:金额,dtype: float64

现在您可以将其写入excel文件。

票数 2
EN

Stack Overflow用户

发布于 2021-06-29 18:04:11

我知道哪里是负面的,然后调整后,事实。

代码语言:javascript
复制
>>> df = pd.read_csv(io.StringIO('Amount\n($70)\n$70'))
>>> df['is_negative'] = df['Amount'].str.match('\(\$?\d+(.\d+)?\)')

>>> raw_amount = pd.to_numeric(df['Amount'].str.replace(r'[\(\)\$]', '', regex=True)
>>> df['num'] = np.where(df['is_negative'], -1 * raw_amount, raw_amount) 
>>> df
 
  Amount  num  is_negative
0  ($70)  -70         True
1    $70   70        False
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68182268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档