我在read_csv中输入的csv文件是几列,其中包含百分比变化,但它有一些隐藏的字符。来自repr(data2)
:
我尝试了以下内容:
data2 = pd.read_csv('C:/Users/nnayyar/Documents/MonteCarlo2.csv', "\n", delimiter = ",", dtype = float)
并收到以下错误:
ValueError: invalid literal for float(): 7.05%
我尝试了一些事情:
float(data2.replace('/n',''))
map(float, data2.strip().split('\r\n'))
但分别收到各种错误 TypeError:float()参数必须是字符串或数字 AttributeError:' DataFrame'对象没有属性' strip'
将CSV对象类型转换为float类型的任何帮助都会有所帮助!谢谢!
答案 0 :(得分:1)
如果您的整个csv都有百分号,那么以下内容将起作用:
In [203]:
import pandas as pd
import io
t="""0 1 2 3
1.5% 2.5% 6.5% 0.5%"""
# load some dummy data
df = pd.read_csv(io.StringIO(t), delim_whitespace=True)
df
Out[203]:
0 1 2 3
0 1.5% 2.5% 6.5% 0.5%
In [205]:
# apply a lambda that replaces the % signs and cast to float
df.apply(lambda x: x.str.replace('%','')).astype(float)
Out[205]:
0 1 2 3
0 1.5 2.5 6.5 0.5
因此,这会将lambda应用于调用向量化str.replace
以删除%
符号的每个列,然后我们可以使用astype
因此,在您的情况下,以下内容应该有效:
data2 = pd.read_csv('C:/Users/nnayyar/Documents/MonteCarlo2.csv', "\n")
data2 = data2.apply(lambda x: x.str.replace('%', '').astype(float))