将 Dataframe 系列中的分数转换为浮点数
Converting Fractions in a Dataframe Series to Float
在 Python 3.x 中,如何将包含分数字符串和 NaN 值的 Dataframe 列转换为浮点数?我尝试了一些方法,但没有找到合适的解决方案。
所以如果我有一个数据框,"df",它看起来像:
a b
0 John 20/1
1 Bob NaN
2 Tim 9/2
我怎样才能使 df 看起来像:
a b
0 John 20.0
1 Bob 1000.0
2 Tim 4.5
感谢您愿意提供的任何指导!
来自 pandas
eval
的魔法
df.b=pd.eval(df.b.fillna(1000))
df
Out[25]:
a b
0 John 20
1 Bob 1000
2 Tim 4.5
或 apply
:
df.b = df.b.fillna(1000).apply(pd.eval)
现在:
print(df)
是:
a b
0 John 20.0
1 Bob 1000.0
2 Tim 4.5
尝试以下:
df = df.fillna(1000.0)
df.b = [eval(str(e)) for e in df.b]
df['b'] = pd.eval(df['b'].fillna(1000.0))
df.head()
在 Python 3.x 中,如何将包含分数字符串和 NaN 值的 Dataframe 列转换为浮点数?我尝试了一些方法,但没有找到合适的解决方案。
所以如果我有一个数据框,"df",它看起来像:
a b
0 John 20/1
1 Bob NaN
2 Tim 9/2
我怎样才能使 df 看起来像:
a b
0 John 20.0
1 Bob 1000.0
2 Tim 4.5
感谢您愿意提供的任何指导!
来自 pandas
eval
的魔法
df.b=pd.eval(df.b.fillna(1000))
df
Out[25]:
a b
0 John 20
1 Bob 1000
2 Tim 4.5
或 apply
:
df.b = df.b.fillna(1000).apply(pd.eval)
现在:
print(df)
是:
a b
0 John 20.0
1 Bob 1000.0
2 Tim 4.5
尝试以下:
df = df.fillna(1000.0)
df.b = [eval(str(e)) for e in df.b]
df['b'] = pd.eval(df['b'].fillna(1000.0))
df.head()