我有一个pandas数据框中的列Column1
,类型为str
,其中的值如下所示:
import pandas as pd
df = pd.read_table("filename.dat")
type(df["Column1"].ix[0]) #outputs 'str'
print(df["Column1"].ix[0])
这段代码输出'1/350'
,当前是一个字符串。我想将它转换成浮点数。
我尝试了以下代码:
df["Column1"] = df["Column1"].astype('float64', raise_on_error = False)
但这并没有把值转换为浮点数。
这个也失败了:
df["Column1"] = df["Column1"].convert_objects(convert_numeric=True)
这个操作失败了:
df["Column1"] = df["Column1"].apply(pd.to_numeric, args=('coerce',))
我该如何将“Column1”列中的所有值转换为浮点数?我能否使用正则表达式来去掉括号?
编辑:
以下是代码行:
df["Meth"] = df["Meth"].apply(eval)
这个方法可以起作用,但是只有当我使用它两次时才有效,也就是说
df["Meth"] = df["Meth"].apply(eval)
df["Meth"] = df["Meth"].apply(eval)
为什么会出现这种情况?
eval
比较慢,但也许这是有道理的。eval
需要考虑可能传入的任何代码,而你的替代方案明确地在/
上工作。 - Jeffdiv
函数(我喜欢)的错误是 ValueError: invalid literal for int() with base 10:"'9"
,我不确定如何修复它。 - ShanZhengYangreturn int(a.strip("'")/int(b.strip("'"))
-即双引号,单引号,双引号。应该会解决它。 - Jeff