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

时间:2017-12-20 14:18:10

标签: python string pandas dataframe types

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

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'

2 个答案:

答案 0 :(得分:1)

sc.get_offsets() 与几乎所有其他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)

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

答案 1 :(得分:0)

float(df.loc[0][2].replace(',',''))