gpt4 book ai didi

python - Pandas numpy复杂如果

转载 作者:行者123 更新时间:2023-11-30 22:18:35 25 4
gpt4 key购买 nike

我需要在以下条件下向 pandas 数据框添加一列:如果销售量(存储在数据集['sum']中)在4到16之间,预测应该为1,否则舍入为int平均销售量(存储在数据集['average']中)。代码如下:

def more_than3_filter(dataset, filename):    
prediction = []

for row in dataset['part number']:
if dataset['sum'] > 3:
if dataset['sum'] < 16:
prediction.append(1)
else:
prediction.append(round(dataset['average']))

我明白

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

与 np.where 相同我应该怎么办?谢谢

最佳答案

你的循环已关闭。您应该迭代 df.iterrows,并且您的 if 条件应引用 row,而不是 dataset

除此之外,您根本不需要循环。您可以使用 pd.Series. Between + np.where 对所有内容进行矢量化以获得额外性能。

df['new'] = np.where(
df['sum'].between(3, 16, inclusive=False), 1, df['average'].round()
)

另一个解决方案涉及loc -

df['new'] = 1
m = ~df['sum'].between(3, 16, inclusive=False)
df.loc[m, 'new'] = df.loc[m, 'average'].round()

这应该稍微更高效,因为它涉及更少的冗余计算。

关于python - Pandas numpy复杂如果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49342486/

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