【发布时间】:2021-11-04 06:40:36
【问题描述】:
我正在处理一个有几千行和几列的数据框。感兴趣的列称为customer_csate_score & group_csate_score
数据如下所示
customer_csate_score group_csate_score
0.000 -0.15
-0.4 0.12
0 0.13
0.578 0.81
0.418 0.96
-0.765 0.1
0.89 -0.87
我要做的是在名为 customer_group_csate_score_toggle_status 和 is_customer_perf_above_group_perf 的数据框中创建 2 个新列。 customer_group_csate_score_toggle_status 仅当 customer_csate_score &
group_csate_score cross over & False 当没有交叉时。 is_customer_perf_above_group_perf 是 True 如果 customer_csate_score 高于
group_csate_score & False 如果customer_csate_score 低于
group_csate_score
切换状态列的预期输出
customer_group_csate_score_toggle_status is_customer_perf_above_group_perf
False True
True False
False False
False False
False False
False False
True True
到目前为止,我已经尝试过这段代码 -
def check_cust_group_crossover(df, df_key1, def_key2):
return np.where(
(
(df[df_key1] > df[def_key2]) & \
(df[df_key1].shift() < df[def_key2].shift())
),
True, False
)
我正在努力实现整个功能。我可以请求指导以实施此操作吗?
【问题讨论】:
-
如果您能提供一个带有样本数据和更简单(更短)的变量/列名的最小工作示例,将会有所帮助。
标签: python pandas dataframe numpy