2024-10-01 09:31:20 发布
网友
我有数据集df。在这个数据集中,我有列Gross 我对Python完全陌生
Gross
我试图将此列转换为float并显示sum()
float
sum()
dollarGross = lambda x: float(x[1:-1]) df.Gross = df.Gross.apply(dollarGross) df.Gross.sum()
但我得到了一个错误:
我错过了什么?在
您的错误从这里开始:
df.Gross.apply(dollarGross)
df.Gross是一个pandas.Series,当您使用apply方法时,pandas会遍历序列中的每个成员,并将该成员传递给名为dollarGross的“可调用”(也称为函数,稍后将详细介绍)。要理解的关键是pandas.Series的成员是什么。在本例中,它们是整数。因此序列中的每个整数都被传递到dollarGross,并按如下方式调用:
df.Gross
pandas.Series
apply
dollarGross
这又是这样的:
float(184[1:-1])
这没道理。您正在尝试使用[1:-1],这是对整数的订阅/切片语法。这就是错误告诉你的:嘿,你不能下标一个整数!
[1:-1]
这就是为什么告诉我们你想做什么是好事。因为现在我们可以帮你了。还记得我说过可以将“callable”传递给apply。嗯,float是float对象类的名称。。。它也是一个“可调用的”,因为我们可以这样做float(184)。所以。。。。在
float(184)
df.Gross.apply(float)
应该把事情做好。但是这样做可能更好
df.Gross.astype(float)
或者,如果df.Gross的某些成员不能解释为float值,那么最好使用@MaxU的答案。在
AFAIKpd.to_numeric()方法为我们提供了将字符串转换为数值的最常用方法:
df['Gross'] = pd.to_numeric(df['Gross'], errors='coerce') print(df['Gross'].sum())
我想你只要写dollarGross = lambda x: float(x)。如果使用方括号,则尝试访问数组。在
dollarGross = lambda x: float(x)
您的错误从这里开始:
^{pr2}$df.Gross
是一个pandas.Series
,当您使用apply
方法时,pandas会遍历序列中的每个成员,并将该成员传递给名为dollarGross
的“可调用”(也称为函数,稍后将详细介绍)。要理解的关键是pandas.Series
的成员是什么。在本例中,它们是整数。因此序列中的每个整数都被传递到dollarGross
,并按如下方式调用:这又是这样的:
这没道理。您正在尝试使用
[1:-1]
,这是对整数的订阅/切片语法。这就是错误告诉你的:嘿,你不能下标一个整数!这就是为什么告诉我们你想做什么是好事。因为现在我们可以帮你了。还记得我说过可以将“callable”传递给
apply
。嗯,float
是float
对象类的名称。。。它也是一个“可调用的”,因为我们可以这样做float(184)
。所以。。。。在应该把事情做好。但是这样做可能更好
或者,如果
df.Gross
的某些成员不能解释为float
值,那么最好使用@MaxU的答案。在AFAIKpd.to_numeric()方法为我们提供了将字符串转换为数值的最常用方法:
我想你只要写
dollarGross = lambda x: float(x)
。如果使用方括号,则尝试访问数组。在相关问题 更多 >
编程相关推荐