gpt4 book ai didi

python - 在DataFrame中添加计算字段

转载 作者:太空宇宙 更新时间:2023-11-03 15:55:45 24 4
gpt4 key购买 nike

我想创建一个名为 str_bos 的列在现有的DataFrame中叫result 。我有以下列 - 'str_nbr', 'ZIP Sales', 'str_Sales', 'ZIP_Distinct #', 'ZIP_Share_of_Str_Sales', 'Counter', 'Str_BOS_Cum%', 'Str_Sales_Rank'

这是我的想法。但是,需要2个小时才能完成。然而,其他操作(如排序、合并等)需要几秒钟的时间。我在这里缺少什么?

def str_bos(row):
if row['str_sales_rank'] == 1 or row['str_bos_cum%'] <= 0.1:
return 1
elif row['str_bos_cum%'] <= 0.2:
return 2
elif row['str_bos_cum%'] <= 0.3:
return 3
elif row['str_bos_cum%'] <= 0.4:
return 4
elif row['str_bos_cum%'] <= 0.5:
return 5
elif row['str_bos_cum%'] <= 0.6:
return 6
elif row['str_bos_cum%'] <= 0.7:
return 7
elif row['str_bos_cum%'] <= 0.8:
return 8
elif row['str_bos_cum%'] <= 0.9:
return 9
else:
return 10

result['str_bos'] = result.apply(lambda row: str_bos(row), axis=1)

最佳答案

我会使用cut()方法在这里:

In [21]: df = pd.DataFrame(np.random.rand(10), columns=['A'])

In [22]: df
Out[22]:
A
0 0.513425
1 0.973631
2 0.549615
3 0.747600
4 0.099415
5 0.737613
6 0.885567
7 0.720187
8 0.446683
9 0.434688

In [23]: df['str_bos'] = pd.cut(df.A, bins=np.arange(0, 1.1, 0.1), labels=np.arange(10)+1)

In [24]: df
Out[24]:
A str_bos
0 0.513425 6
1 0.973631 10
2 0.549615 6
3 0.747600 8
4 0.099415 1
5 0.737613 8
6 0.885567 9
7 0.720187 8
8 0.446683 5
9 0.434688 5

关于python - 在DataFrame中添加计算字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40818921/

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