无法将字符串转换为浮点数:'7,751.30'[重复]

问题描述 投票:-2回答:2

这个问题在这里已有答案:

我从台湾证券交易所获得TWSE价格。

df = pd.read_csv(r'C:\Stock\TWSE.csv',encoding='Big5')
df.head()
    日期    開盤指數   最高指數   最低指數   收盤指數
0 96/02/01 7,751.30  7,757.63   7,679.78  7,701.54
1 96/02/02 7,754.16  7,801.63   7,751.53  7,777.03
2 96/02/05 7,786.77  7,823.94   7,772.05  7,783.12
3 96/02/06 7,816.30  7,875.75   7,802.94  7,875.75
4 96/02/07 7,894.77  7,894.77   7,850.06  7,850.06
df.loc[0][2]
'7,757.63'

type(df.loc[0][2])
str

我想将str类型转换为float类型以进行绘图。但是,我无法转换它们。例如:

float(df.loc[0][2])
ValueError: could not convert string to float: '7,757.63'
python string pandas dataframe types
2个回答
1
投票

pd.read_csv,就像几乎所有其他pd.read_*函数一样,有一个thousands参数,你可以设置为',',以确保你将这些值作为浮点数导入。

以下是一个例子:

import io
import pandas as pd


txt = '日期    開盤指數   最高指數   最低指數   收盤指數\n0 96/02/01 7,751.30  7,757.63   7,679.78  7,701.54\n1 96/02/02 7,754.16  7,801.63   7,751.53  7,777.03\n2 96/02/05 7,786.77  7,823.94   7,772.05  7,783.12\n3 96/02/06 7,816.30  7,875.75   7,802.94  7,875.75\n4 96/02/07 7,894.77  7,894.77   7,850.06  7,850.06'

with io.StringIO(txt) as f:
    df = pd.read_table(f, encoding='utf8', header=0, thousands=',', sep='\s+')

print(df)

产量:

   日期     開盤指數     最高指數  最低指數  收盤指數
0  96/02/01  7751.30  7757.63  7679.78  7701.54
1  96/02/02  7754.16  7801.63  7751.53  7777.03
2  96/02/05  7786.77  7823.94  7772.05  7783.12
3  96/02/06  7816.30  7875.75  7802.94  7875.75
4  96/02/07  7894.77  7894.77  7850.06  7850.06

我希望这证明是有帮助的。


0
投票
float(df.loc[0][2].replace(',',''))
© www.soinside.com 2019 - 2024. All rights reserved.