Python 如何用熊猫取整计算
我知道如何在pandas()中简单地对列进行取整,但是,我的问题是如何在pandas中同时进行取整和计算Python 如何用熊猫取整计算,python,pandas,data-manipulation,Python,Pandas,Data Manipulation,我知道如何在pandas()中简单地对列进行取整,但是,我的问题是如何在pandas中同时进行取整和计算 df['age_new'] = df['age'].apply(lambda x: round(x['age'] * 0.024319744084, 0.000000000001)) TypeError: 'float' object is not subscriptable 有没有办法做到这一点?有两个问题: x['age']括号内不需要['age'],因为您已经应用于age列(这就
df['age_new'] = df['age'].apply(lambda x: round(x['age'] * 0.024319744084, 0.000000000001))
TypeError: 'float' object is not subscriptable
有没有办法做到这一点?有两个问题:
括号内不需要x['age']
,因为您已经应用于['age']
列(这就是为什么会出现错误)age
将round
作为第二个参数int
5
只是一个例子。)有两个问题:
括号内不需要x['age']
,因为您已经应用于['age']
列(这就是为什么会出现错误)age
将round
作为第二个参数int
5
只是一个例子。)- 没有矢量化。
- 当对
使用pandas.Series
时,像.apply
一样,'age'
变量lambda
是x
列,因此正确的语法是'age'
圆形(x*0.0243,4)
- 的
参数需要ndigits
,而不是int
float
- 当对
- 使用矢量化方法会更快,比如,然后。
- 在这种情况下,对于1000行,矢量化方法比使用
快4倍.apply
- 在这种情况下,对于1000行,矢量化方法比使用
将熊猫作为pd导入
将numpy作为np导入
#测试数据
np.random.seed(365)
df=pd.DataFrame({'age':np.random.randint(110,size=(1000))})
%%时间
df.age.mul(0.024319744084)。整轮(5)
[out]:
每个回路212µs±3.86µs(7次运行的平均±标准偏差,每个1000个回路)
%%时间
(df['age']*0.024319744084)。第五轮
[out]:
每个回路211µs±9.3µs(7次运行的平均±标准偏差,每个1000个回路)
%%时间
df.年龄适用(λx:圆形(x*0.024319744084,5))
[out]:
每个回路845µs±20.5µs(7次运行的平均值±标准偏差,每个1000个回路)
- 没有矢量化。
- 当对
使用pandas.Series
时,像.apply
一样,'age'
变量lambda
是x
列,因此正确的语法是'age'
圆形(x*0.0243,4)
- 的
参数需要ndigits
,而不是int
float
- 当对
- 使用矢量化方法会更快,比如,然后。
- 在这种情况下,对于1000行,矢量化方法比使用
快4倍.apply
- 在这种情况下,对于1000行,矢量化方法比使用
将熊猫作为pd导入
将numpy作为np导入
#测试数据
np.random.seed(365)
df=pd.DataFrame({'age':np.random.randint(110,size=(1000))})
%%时间
df.age.mul(0.024319744084)。整轮(5)
[out]:
每个回路212µs±3.86µs(7次运行的平均±标准偏差,每个1000个回路)
%%时间
(df['age']*0.024319744084)。第五轮
[out]:
每个回路211µs±9.3µs(7次运行的平均±标准偏差,每个1000个回路)
%%时间
df.年龄适用(λx:圆形(x*0.024319744084,5))
[out]:
每个回路845µs±20.5µs(7次运行的平均值±标准偏差,每个1000个回路)
df['age_new'] = df['age'].apply(lambda x: round(x * 0.024319744084, 5))