python - 使用系列作为输入,如何在 pandas 数据框中找到具有匹配值的行?例如 df.loc[系列]?
问题描述
我有一个 DataFramedf
和一个s
与df
. 我想找到其中所有df
具有相同值的行s
。我可能应该提到,列可以更改,但s
始终是df
.
df = pd.DataFrame.from_dict({'a': {0: 0.015, 1: 0.02, 2: 0.025, 3: 0.015},
'b': {0: True, 1: True, 2: True, 3: True},
'c': {0: 'foo', 1: 'foo', 2: 'foo', 3: 'foo'},
'd': {0: 1, 1: 1, 2: 1, 3: 1}})
s = df.loc[0]
在这种情况下,预期的结果将是 的返回值df.loc[[0,3]]
。或者,匹配行的索引也可以。
当然,如果列每次都相同,df.loc[df['a']==s['a'], df['b']==s['b'], ...]
那就可以了。也许有一种df.loc[ ]
通过某种理解来生成术语的方法?
我在想象必须有一种 pythonic/pandas 的方式来做到这一点。
解决方案
比较行DataFrame.eq
,然后测试True
每行是否所有 sDataFrame.all
和最后一个过滤器boolean indexing
:
df = df[df.eq(s).all(axis=1)]
print (df)
a b c d
0 0.015 True foo 1
3 0.015 True foo 1
详情:
print (df.eq(s))
a b c d
0 True True True True
1 False True True True
2 False True True True
3 True True True True
print (df.eq(s).all(axis=1))
0 True
1 False
2 False
3 True
dtype: bool
推荐阅读
- php - 纯php阻止html输入保存到文本文件中
- python - 通过模拟使用 Python 日志记录
- angular-material-8 - 未应用 Angular 预建主题
- javascript - 为什么最后一个 .then 在承诺链中起作用
- reactjs - 导入 3rd 方库时的 CommonJS 汇总插件语法错误,主要与“进程”有关
- javascript - 无法在 owl-carousel 中添加数据,并且数据在 Spring Boot、JSP、Ajax 中应该是可重复的
- javascript - Reprezente 对 bar char 投票
- javascript - Javascript中的闰年问题使用嵌套的if-else
- mongodb-query - CosmosDB mongoDB API 排序和全文搜索抛出错误
- html - 如何将 CSS 过渡添加到仅用于转换图像的产品项目