2 回答
![?](http://img1.sycdn.imooc.com/545863aa00014aa802200220-100-100.jpg)
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
![?](http://img1.sycdn.imooc.com/54584cd10001404b02200220-100-100.jpg)
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()
添加回答
举报