亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 pandas 獲取新列中滿足多個條件的列索引

使用 pandas 獲取新列中滿足多個條件的列索引

收到一只叮咚 2023-10-31 21:46:58
以以下數據框為例:df = pd.DataFrame({'Sample':['X', 'Y', 'Z'], 'Base':[2, 10, 3], 'A':[0,5,100], 'C':[0,10,7]})我想添加一個名為df["indices"]列索引的新列df["A"]和/或df["C"]只要它們滿足兩個條件:必須大于 5df["A"]/df["Base"]或者df["C"]/df["Base"]必須大于或等于 1生成的數據框將是:df = pd.DataFrame({'Sample':['X', 'Y', 'Z'], 'Base':[2, 20, 3], 'A':[0,6,100], 'C':[0,10,7], 'indices': ['','C','A,C']})我可以為我的第一個條件獲取 True 或 False 值,df[['A','C']] > 5但我無法讓它與我的條件 2 一起使用,該條件基于我的數據框中的另一列。在新專欄中獲取 True 的索引又是另一回事了。我想象有 apply 和 get_loc 或 index 的東西,但無論我如何嘗試,我都無法讓它工作。
查看完整描述

2 回答

?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

讓我們創建一個滿足兩個給定條件的布爾掩碼,然后使用DataFrame.dot該掩碼來獲取索引:


m = df[['A', 'C']].gt(5) & df[['A', 'C']].div(df['Base'], axis=0).ge(1)

df['indices'] = m.dot(m.columns + ',').str.rstrip(',')

  Sample  Base    A   C indices

0      X     2    0   0        

1      Y    10    5  10       C

2      Z     3  100   7     A,C


查看完整回答
反對 回復 2023-10-31
?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

當滿足任意數量的條件時,您可以將df.loc值分配回該列。一個簡單的方法是擁有其中 3 個,每個都有您想要的條件。如果您愿意,您也可以將它們串聯起來np.where以實現相同的目標。


import pandas as pd


df = pd.DataFrame({'Sample':['X', 'Y', 'Z'], 

                   'Base':[2, 10, 3], 

                   'A':[0,5,100], 

                   'C':[0,10,7]})


df.loc[(df['A'] / df['Base'] >=1) & (df['C'] / df['Base'] >=1), 'indicies'] = 'A,C'

df.loc[(df['A'] / df['Base'] >=1) & (df['C'] / df['Base'] <1), 'indicies'] = 'A'

df.loc[(df['A'] / df['Base'] <1) & (df['C'] / df['Base'] >=1), 'indicies'] = 'C'

輸出


   Sample   Base      A     C   indicies

0       X      2      0     0       NaN

1       Y     10      5    10         C

2       Z      3    100     7       A,C


查看完整回答
反對 回復 2023-10-31
  • 2 回答
  • 0 關注
  • 211 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號