簡體   English   中英

根據其他 4 個變量創建一個新變量

[英]Create a new variable based on 4 other variables

我在 Python 中有一個名為df1的 dataframe ,其中我有 4 個名為 Ordering_1 的二分變量; Ordering_2、Ordering_3、Ordering_4 的真/假值。

我需要創建一個名為Clean的變量,它基於其他 4 個變量。 意思是,當 Ordering_1 == True 時,Clean == Ordering_1,當 Ordering_2==True 時,Clean == Ordering_2。 那么 Clean 將是 Ordering_1 中所有真實值的組合; Ordering_2、Ordering_3、Ordering_4。

這是我希望變量 Clean 的示例:

我嘗試了以下代碼,但它不起作用: df1[Clean] = df1[Ordering_1] + df1[Ordering_1] + df1[Ordering_1] + df1[Ordering_1]

有人能幫我在 python 中如何做到這一點嗎?

如果每行有多個True的通用解決方案 - 通過DataFrame.filter過濾列,然后使用DataFrame.dot進行矩陣乘法:

df1 = df.filter(like='Ordering_')

df['Clean'] = df1.dot(df1.columns + ',').str.strip(',')

如果每行只有一個“True”值,您可以使用每列“Ordering_1”、“Ordering_2”等的布爾值和 df1.loc。

請注意,這是您使用 df1.Ordering_1 得到的結果:0 True 1 False 2 False 3 False 名稱:Ordering_1,dtype:bool

使用 df1.loc,您可以使用它來過濾“True”行,在這種情況下只有第 0 行: 在此處輸入圖像描述

所以你可以這樣編碼:

  1. 創建一個新的空白“clean”列:df1["clean"]=""

  2. 將系列 df.Ordering_1 = True 的行設置為“Ordering_1”:
    df1.loc[df1.Ordering_1,["clean"]] = "Ordering_1"
    在此處輸入圖像描述

  3. 以同樣的方式處理剩余的列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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