2 回答

TA貢獻1830條經驗 獲得超9個贊
我不確定我的問題是否正確,但至少這個答案會幫助其他人給你答案如果這不是你要找的,請給我機會
import pandas as pd
#your dataframe
maindf = {'PM Owner': ['A', 'B','C','A','E','F'], 'Risk Tier': [1,3,1,1,1,2],'sam' :['A0','B0','C0','D0','E0','F0']}
Maindf = pd.DataFrame(data=maindf)
#what you are looking for
filterdf = {'PM Owner': ['A' ], 'Risk Tier': [ 1 ]}
Filterdf = pd.DataFrame(data=filterdf)
#Filtering
NewMaindf= (Maindf[Maindf[['PM Owner','Risk Tier']].astype(str).sum(axis = 1).isin(
Filterdf[['PM Owner','Risk Tier']].astype(str).sum(axis = 1))])
#Just one sample
print( (NewMaindf).sample())
#whole dataset after filtering
print( (NewMaindf) )
結果 :
PM Owner Risk Tier sam
3 A 1 D0
PM Owner Risk Tier sam
0 A 1 A0
3 A 1 D0

TA貢獻1828條經驗 獲得超6個贊
您指定的條件可以匹配許多行,這就是您收到錯誤的原因,同時建議您使用將結果減少為單個值的函數之一。然而,目前形式的條件實際上可以用作掩模,因此只需縮小范圍即可抽取符合標準的樣本,即:
df.loc[(df['PM Owner'] == 'Alex') & (df['Risk Tier'] == 'Critical'), 'Risk Tier'].sample()
如果您需要循環遍歷每個 PM 所有者,您可以這樣做:
for pm_owner in df['PM Owner']: sample = df.loc[(df['PM Owner'] == pm_owner) & (df['Risk Tier'] == 'Critical'), 'Risk Tier'].sample()
添加回答
舉報