Python 如何用熊猫取整计算

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列(这就

我知道如何在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
    列(这就是为什么会出现错误)
  • 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行,矢量化方法比使用
      .apply
      快4倍
将熊猫作为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行,矢量化方法比使用
      .apply
      快4倍
将熊猫作为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))