我已经编写了一些与这个玩具示例等效的 Pandas 代码:
df_test = pd.DataFrame({'product': [0, 0, 1, 1], 'sold_for': [5000, 4500, 10000, 8000]})
def product0_makes_profit(row, product0_cost):
return row['sold_for'] > product0_cost
def product1_makes_profit(row, product1_cost):
return row['sold_for'] > product1_cost
df_test['made_profit'] = df_test[df_test['product']==0].apply(product0_makes_profit, args=[4000], axis=1, result_type="expand")
df_test['made_profit'] = df_test[df_test['product']==1].apply(product1_makes_profit, args=[9000], axis=1, result_type="expand")
df_test
我得到以下结果:
product sold_for made_profit
0 0 5000 NaN
1 0 4500 NaN
2 1 10000 True
3 1 8000 False
我希望第 0 行和第 1 行的“made_profit”列是 True,而不是 NaN,但显然第二个 apply() 覆盖了由第一个 apply() 生成的 made_profit 列。
我怎样才能得到我期望的列?我不想在第一个 apply() 中创建一个“product0_made_profit”列,在第二个 apply() 中创建一个“product1_made_profit”列,所以我可以将这两列合并到我想要获得的一个“made_profit”列中,因为在我的实际代码中,我在产品列中有很多不同的值(意味着要应用很多不同的功能)。
米琪卡哇伊
相关分类