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

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
添加回答
舉報