我想根据列表中的几列中的任何一列是否与测试匹配来过滤数据框。 例如,它可以这样工作: ...如果有更多的列要处理,则可以构建一个循环。 但我想知道是否有更 Pythonic 的方式来进行,从结果开始 它给出了 4 列布尔值,我想按行应用or操作。 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
import pandas as pd
dafr = pd.DataFrame({'a': [1,2,3], 'b': [[1,2,3],[2,3,4],[3,4,5]]})
我尝试做类似的事情:
dafr[dafr['b'].isin(2)]
它应返回具有列表的行:[1,2,3]&[2,3,4]。
我想知道这是否可能?
isin
返回列值是否在您传递的值中。 您要检查传递的值是否在列值中。
据我所知,没有直接的捷径,但是您可以使用map
:
>>> dafr[dafr.b.map(lambda x: 2 in x)]
a b
0 1 [1, 2, 3]
1 2 [2, 3, 4]
dafr[dafr['b'].apply(lambda x: 2 in x)]
如果将b存储为元组列而不是列表列,则afr[dafr['b'].apply(lambda x: 2 in x)]
将执行得非常快。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.