簡體   English   中英

根據布爾條件在新列中設置值

[英]Set values in a new column based on a boolean condition

我有一個數據框和兩個字典,如下所示:

a = pd.DataFrame({'A':[1,2,3],'B':[4,5,6]})
x = {'a':'a'}
y = {'b':'b'}

現在,我想執行一個添加新列C的操作,以便當A> = 2並且B> = 2時,C中的每個單元格都存儲x,否則存儲y。 結果數據幀應等效於:

a = pd.DataFrame({'A':[1,2,3],'B':[4,5,6], 'C':[{'b':'b'}, {'a':'a'}, {'a':'a'}]})

我嘗試了許多不同的方法,但到目前為止沒有任何效果。 這是一個玩具示例,而實際數據幀將具有許多行和列,並且可能會使用更復雜的條件。 最終目標是通過將可視化所需的所有必要信息(例如標記定義)存儲為其他列,從而為可可視化的可視化准備數據框架。

提前致謝。

使用np.where

a['C'] = np.where((a.A >= 2) & (a.B >= 2), x, y)

   A  B           C
0  1  4  {'b': 'b'}
1  2  5  {'a': 'a'}
2  3  6  {'a': 'a'}

為了解釋這一點,因為您說您的實際數據更復雜,請在np.where進行以下操作:

根據條件從x或y返回元素

因此,只需創建您的條件,然后根據條件的結果確定需要xy的值。 如果您有兩個以上的可能選項和多個條件,則應查看np.select

為了演示起見,這是等效的np.select

conds = [(a.A >=2) & (a.B >=2)]
choices = [x]

np.select(conds, choices, default=y)
# array([{'b': 'b'}, {'a': 'a'}, {'a': 'a'}], dtype=object)

暫無
暫無

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

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