Python 选择列上的条件为真的所有行
我有这个df:Python 选择列上的条件为真的所有行,python,pandas,dataframe,Python,Pandas,Dataframe,我有这个df: df=pd.DataFrame({times:[1,2,3],'1' : [True,False,True], '2':[False,False,True]}) 我想返回列“1”或“2”为真的行: expected_df : times '1' '2' 1 True False 3 True True 在我的真实示例中,我有更多的列,因此我正在使用df列列表寻找解决方案,如: df.loc[df[myColumns]==True] 我该怎么做呢?
df=pd.DataFrame({times:[1,2,3],'1' : [True,False,True], '2':[False,False,True]})
我想返回列“1”或“2”为真的行:
expected_df :
times '1' '2'
1 True False
3 True True
在我的真实示例中,我有更多的列,因此我正在使用df列列表寻找解决方案,如:
df.loc[df[myColumns]==True]
我该怎么做呢?如果您有列列表:
columns = [...]
mask = df[columns[0]] == true
for col_name in culomns[1:]:
mask = mask | df[col_name] == true
my_df = df[mask]
df.loc[df[myColumns].all(1)]
这可能会起作用,因为至少为1 True的行的值将大于0,并且如果有多个列,则不必列出所有列名。我应该明确指出,在我的真实示例中,我只有非常大的列列表,可以将时间更改为时间这与
df[df['1']&df['2']]相同
u可以将掩码作为循环运行。它只返回所有列都为真的情况。如果一个或多个True@Pi-R将all(1)
更改为any(1)
。
df[df.apply(sum, axis=1)>0]