如何解决在Python中将.sample与.where结合使用时,会出现不希望的结果
我正在尝试从满足条件的数据框中选择2个随机值。 请在下面查看示例df:
data = {'col1': ['abc','def','ghi','jkl','mno','pqr','stu','vwx','yz'],'col2': ['4','1','4','0','2','4'],'col3': ['Sweden','Malaysia','Sweden','Venezuela','France','Australia','Belgium','Sweden']
}
df = pd.DataFrame (data,columns = ['col1','col2','col3'])
我想从'col1'中选择2个随机值,其中'col2'等于4。然后使用的代码是:
print(df['col1'].sample(n=2).where(df['col2']==4))
期望的输出为:
0 abc
6 stu
....或
8 yz
2 ghi
但是代码当前提供的输出如下:
7 NaN
3 NaN
这是不希望的,因为a)我期望看到一个字符串值作为文本,并且b)对应于第3行的值将满足条件,而对应于第7行的值不满足,因此该条件不符合在所有情况下都得到满足。
问题:
- 我将如何修改代码,使其仅在满足条件的情况下返回文本值
- 如何添加第二个条件,例如
.where(df['col2']==4) & (df['col3']=='Sweden')
感谢您在此提供的指导。
解决方法
也许首先过滤数据会更容易。我不确定您是否特别想使用.where()
,但如果不是,这也将有助于您下一步添加更多条件。
此外,我认为您的问题的一部分是在df中,col2值是字符串,因此您需要让公式查找“ 4”而不是数字4。
df.loc[df['col2'] == '4','col1'].sample(n=2)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。