簡體   English   中英

如何根據特定條件轉換和創建具有 0 和 1 的 pandas 列

[英]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.reindexMultiIndex.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM