本文是小编为大家收集整理的关于根据多个条件获得DF的分段的处理/解决方法,可以参考本文帮助大家快速定位并解决问题,中文翻译不准确的可切换到English标签页查看源文。
问题描述
我试图根据多种条件从DF提取行,必须在选择任何行之前都必须满足所有条件.
我的DF
columns = ['is_net', 'is_pct', 'is_mean', 'is_wgted', 'is_sum'] index = ['a','b','c','d'] data = [['True','True','False','False', 'False'], ['True','True','True','False', 'False'], ['True','True','False','False', 'True'], ['True','True','False','True', 'False']] df = pd.DataFrame(columns=columns, index=index, data=data) df is_net is_pct is_mean is_wgted is_sum a True True False False False b True True True False False c True True False False True d True True False True False
我的条件必须以这种格式:
conditions = {'is_net': 'True', 'is_pct': 'True', 'is_mean': 'False', 'is_wgted': 'True', 'is_sum': 'False'}
预期输出:
is_net is_pct is_mean is_wgted is_sum d True True False True False
推荐答案
我认为诀窍是将conditions制成一个系列:
>>> pd.Series(conditions) is_mean False is_net True is_pct True is_sum False is_wgted True dtype: object >>> (df == pd.Series(conditions)) is_mean is_net is_pct is_sum is_wgted a True True True True False b False True True True False c True True True False False d True True True True True >>> (df == pd.Series(conditions)).all(axis=1) a False b False c False d True dtype: bool >>> df[(df == pd.Series(conditions)).all(axis=1)] is_net is_pct is_mean is_wgted is_sum d True True False True False
问题描述
I'm trying to extract rows from a df based on multiple conditions, ALL of the conditions must be met before any rows are selected else nothing.
My df
columns = ['is_net', 'is_pct', 'is_mean', 'is_wgted', 'is_sum'] index = ['a','b','c','d'] data = [['True','True','False','False', 'False'], ['True','True','True','False', 'False'], ['True','True','False','False', 'True'], ['True','True','False','True', 'False']] df = pd.DataFrame(columns=columns, index=index, data=data) df is_net is_pct is_mean is_wgted is_sum a True True False False False b True True True False False c True True False False True d True True False True False
My conditions which must be in this format:
conditions = {'is_net': 'True', 'is_pct': 'True', 'is_mean': 'False', 'is_wgted': 'True', 'is_sum': 'False'}
Expected output:
is_net is_pct is_mean is_wgted is_sum d True True False True False
推荐答案
I think the trick is to make conditions into a Series:
>>> pd.Series(conditions) is_mean False is_net True is_pct True is_sum False is_wgted True dtype: object >>> (df == pd.Series(conditions)) is_mean is_net is_pct is_sum is_wgted a True True True True False b False True True True False c True True True False False d True True True True True >>> (df == pd.Series(conditions)).all(axis=1) a False b False c False d True dtype: bool >>> df[(df == pd.Series(conditions)).all(axis=1)] is_net is_pct is_mean is_wgted is_sum d True True False True False
相关标签/搜索
centos配置.net core应用开机启动服务
利用飞行数据再次运行机载软件
top 物理内存增加
oracle开启ssl连接 影响正常使用嘛
java 越权问题解决
sqlserver expression转换为int
用java输出一首古诗
如何清除source insight的最近文件
uniapp在多个text换行
NOIP2017提高组 时间复杂度
pace.js 不好用不会自动关闭
python scrapy 多级页面爬取翻页爬取
python
pandas
r
dataframe
aggregate
series
python-3.x
loops
sql
sql-server