[英]How to transform and create a pandas column with 0 and 1 based on specific condition
我想創建一個列churn
,如圖所示。 代碼應該對每年的列Col
進行分組和比較,如果在下一年找到Col
值,則分配 0。
在此示例中,2017 年缺少第 3 行。因此分配 1。
如何在 pandas 中執行此操作?
State ID Col Year cost Churn
CT 123 M 2016 10 0
CT 123 C 2016 15 0
CT 123 A 2016 10 1
CT 123 C 2016 20 0
CT 123 M 2017 10 0
CT 123 C 2017 15 0
首先通過Series.reindex
和MultiIndex.from_product
添加前 4 列的所有缺失組合,然后通過DataFrameGroupBy.shift
每前 3 列移動,最后使用DataFrame.merge
作為原始順序並刪除所有添加的行(如果沒有參數on
使用 all兩個 DataFrame 中的列相同):
s = df.assign(Churn=0).set_index(['State','ID','Col','Year'])['Churn']
df1 = df.merge(s.reindex(pd.MultiIndex.from_product(s.index.levels), fill_value=1)
.groupby(level=[0,1,2])
.shift(-1, fill_value=0)
.reset_index())
print (df1)
State ID Col Year Churn
0 CT 123 M 2016 0
1 CT 123 C 2016 0
2 CT 123 A 2016 1
3 CT 123 M 2017 0
4 CT 123 C 2017 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.