Python pandas未将类型字符串转换为浮点
我已尝试用空白字段替换“,”Python pandas未将类型字符串转换为浮点,python,pandas,dataframe,Python,Pandas,Dataframe,我已尝试用空白字段替换“,” df['amount'].replace(',','', regex=True).astype(float) 错误: ValueError: could not convert string to float: df['amount'] = df['amount'].astype('float64') 我仍然会犯同样的错误。示例数据如下所示: 5000.00和100000.234值 如何将其转换为浮动 顺便说一句,我正在读一个json文件!只有文件的路径。我
df['amount'].replace(',','', regex=True).astype(float)
错误:
ValueError: could not convert string to float:
df['amount'] = df['amount'].astype('float64')
我仍然会犯同样的错误。示例数据如下所示:
5000.00和100000.234值
如何将其转换为浮动
顺便说一句,我正在读一个json文件!只有文件的路径。我认为需要重新分配:
df = pd.DataFrame({'amount':['5,000.00', '1,00,000.234']})
df['amount'] = df['amount'].replace(',','', regex=True).astype('float64')
print (df)
amount
0 5000.000
1 100000.234
如果不起作用,请检查是否存在一些错误值:
df = pd.DataFrame({'amount':['5,000.00', '1,00,000.234', 'a']})
print (df)
amount
0 5,000.00
1 1,00,000.234
2 a
print (df.loc[pd.to_numeric(df['amount'].replace(',','', regex=True), errors='coerce').isnull(), 'amount'])
2 a
Name: amount, dtype: object
然后可以将错误值转换为NaN
s:
df = pd.DataFrame({'amount':['5,000.00', '1,00,000.234', 'a']})
print (df)
amount
0 5,000.00
1 1,00,000.234
2 a
df['amount'] = pd.to_numeric(df['amount'].replace(',','', regex=True), errors='coerce', downcast='float')
print (df)
amount
0 5000.000
1 100000.234
2 NaN
如果使用
pd.read_csv
forDataFrame
添加参数数千=','
:
df = pd.read_csv(file, thousands=',')
使用
pandas.to_numeric
和pd.Series.str.replace
可用于:
s = pd.Series(['5,000.00', '1,00,000.234'])
s = pd.to_numeric(s.str.replace(',', ''), downcast='float')
print(s)
# 0 5000.000
# 1 100000.234
# dtype: float64
然而,如果可能的话,更好的办法是从源头上解决这个问题。例如,
pandas.read\u csv
具有参数,允许您考虑此类数字格式。我们的值(如5000.00)将转换为5000.00作为浮点:
df['drawing Amt.]=[df['drawing Amt.]中i的浮动(str(i)。替换(“,”,”)]
我正在使用json,第一个答案不起作用,但第二个答案起作用,但它不会将数据类型转换为float。请稍候。我解释得更多。@jason-我认为第二段是为了检查有问题的值,然后我添加了解决方案,将它们重新拼贴到NaN
s。请检查一下。@jason-不用它试试,如果效果不错的话,我想你可以毫无问题地移除它。酷。谢谢你的提醒!!:)你太快太好了!!!再次感谢!