gpt4 book ai didi

python - 在 Pandas 数据框中四舍五入一列

转载 作者:行者123 更新时间:2023-11-28 19:35:04 26 4
gpt4 key购买 nike

我有一个 pandas 数据框 df 看起来像这样:

          no_obs  price_cleaning  house_size
0 1 585 30
1 1 585 40
2 1 585 43
3 1 650 43
4 1 633 44
5 1 650 45
6 2 585 50
7 1 633 50
8 1 650 50
9 2 750 50

我想用这个函数对 price_cleaning 列中的值进行四舍五入:

def roundup(x):
返回 int(math.ceil(x/10.0)) * 10

我已经尝试了这个答案的解决方案(Applying function to Pandas dataframe by column):

cols = [col for col in df.columns if col != 'price_cleaning']
df[cols] = df[cols].apply(roundup)

我收到以下错误:TypeError: ("cannot convert the series to ", 'occurred at index no_obs')

谁能帮我理解为什么这不起作用?如何将汇总函数应用于列?非常感谢任何帮助。

最佳答案

我会像这样矢量化

In [298]: df['p'] = (np.ceil(df.price_cleaning / 10) * 10).astype(int)

In [299]: df
Out[299]:
no_obs price_cleaning house_size p
0 1 585 30 590
1 1 585 40 590
2 1 585 43 590
3 1 650 43 650
4 1 633 44 640
5 1 650 45 650
6 2 585 50 590
7 1 633 50 640
8 1 650 50 650
9 2 750 50 750

对于 10K 行,计时 - 向量化方法比应用快约 15 倍

In [331]: %timeit (np.ceil(dff.price_cleaning / 10) * 10).astype(int)
1000 loops, best of 3: 436 µs per loop

In [332]: %timeit dff['price_cleaning'].apply(roundup)
100 loops, best of 3: 7.86 ms per loop

In [333]: dff.shape
Out[333]: (10000, 4)

至少在这种情况下,性能差距会随着行数的增加而增加。

关于python - 在 Pandas 数据框中四舍五入一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41303189/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com