pandas - 熊猫根据位置在一系列列上的布尔值选择行
问题描述
我有一个df
Name Param_1 Param_2 Param_3
John True False False
Mary False False False
Peter True False False
Linda False False True
我想根据列( 和 )范围内的 or 值创建两个新数据True
框。像这样的东西...False
Params_1
Params_2
Params_3
df_1 =
Name Param_1 Param_2 Param_3
John True False False
Peter True False False
Linda False False True
df_2 =
Name Param_1 Param_2 Param_3
Mary False False False
但是,每次运行代码时我都不知道 Param_1 等的名称,所以我想使用位置索引(切片)。在这种情况下,[:, 1:]
我已经看到了基于一列中的值选择行的示例,当列具有已知名称时,而不是通过按位置跨多列切片。
我试过ais_gdf.iloc[ais_gdf[:, 1:].isin(False)]
了,但没有用。任何帮助表示赞赏。
解决方案
用于DataFrame.iloc
掩码的选择列并测试是否至少有一个True
按DataFrame.any
,然后按 过滤boolean indexing
,用于df_2
反转掩码 按~
:
m = ais_gdf.iloc[:, 1:].any(axis=1)
#alternative for select only boolean columns
#m = ais_gdf.select_dtypes(bool).any(axis=1)
#alternative1 for columns names with with Param
#m = ais_gdf.filter(like='Param').any(axis=1)
df_1 = ais_gdf[m]
df_2 = ais_gdf[~m]
print (df_1)
Name Param_1 Param_2 Param_3
0 John True False False
2 Peter True False False
3 Linda False False True
print (df_2)
Name Param_1 Param_2 Param_3
1 Mary False False False
推荐阅读
- saml - 如何让多个应用程序通过 SAML 单点登录到一个应用程序?
- python-3.x - 如何使用 pydoc 递归生成整个项目的文档?
- algorithm - 什么是“圈猫”游戏中诱捕猫的好算法?
- go - 如何将 gota 数据帧写入 csv?
- java - 如果在 ListView JavaFx 中选择了项目
- android - 使 RelativeLayout 可滚动
- java - 不知道如何解决这个错误,试图写一个方法,但总是得到同样的错误
- java - How to select items from dropdown list by selenium
- git - VSTS 存储库拉取请求
- python - 避免使用多个相同类型的窗口