python TypeError:'float' object is not subscriptable -使用Pandas框架

ldioqlga  于 12个月前  发布在  Python
关注(0)|答案(2)|浏览(141)

我试图从一个列中转换字符串值,其中的值看起来像这样:$200,$6,000等。我想将这些值转换为浮点数,并将它们保存到我的框架中的一个新列中,这样我就可以计算聚合统计数据,例如.mean()。

my_df["Float Values"] = my_df["Value"].apply(lambda x: float(x[1:].replace(',','')) if x != "None" else 0)

字符串
但不幸的是,我得到了这个错误:

TypeError: 'float' object is not subscriptable


我做错了什么?

vojdkbi0

vojdkbi01#

也许有NaN
使用以下代码:

my_df["Float Values"] = my_df["Value"].str[1:].str.replace(',', '').astype('float').fillna(0)

字符串
以身作则

import pandas as pd
s = pd.Series(['$200', '$3,000', float('nan')])


S

0    $200
1    $3,000
2     NaN
dtype: object


运行你的代码:

s.apply(lambda x: float(x[1:].replace(',','')) if x != "None" else 0)


错误类型:

TypeError: 'float' object is not subscriptable


使用以下代码:

s.str[1:].str.replace(',', '').astype('float').fillna(0)


输出:

0     200.0
1    3000.0
2       0.0
dtype: float64

xesrikrc

xesrikrc2#

虽然这里的代码不是很pythonic,但一个快速的解决方案是在你提到的操作之前再放一行。它会将你的列从float转换为string。

my_df["Value"] = my_df["Value"].apply(str)

字符串
有关更多信息,请参见here

相关问题