gpt4 book ai didi

python - pandas:如何通过选择列范围来过滤行?

转载 作者:行者123 更新时间:2023-11-30 21:54:02 25 4
gpt4 key购买 nike

我有以下数据框:

    name  c1 c2 c3 c4 c5 c6 c7 c8 
--- -- -- -- -- -- -- -- --
0 img1 0 1 1 0 0 0 1 0
1 img2 1 0 0 0 0 0 1 1
2 img3 1 0 0 1 0 1 0 0
...

我想选择列范围 c2 到 c6 中至少有一个非零值(即 1)的行。生成的数据帧应排除第二行 (img2 ...)。

我可以通过在条件中单独提及每一列来解决这个问题:

df = df[((df['c2']==1) | (df['c3']==1) ... | (df['c6']==1))]

是否有其他更简洁的方法可以在不提及每一列的情况下实现相同的目的(可能基于列的位置范围)?

最佳答案

# test data
from io import StringIO
data = StringIO('''name,c1,c2,c3,c4,c5,c6,c7,c8
img1,0,1,1,0,0,0,1,0
img2,1,0,0,0,0,0,1,1
img3,1,0,0,1,0,1,0,0''')

import pandas as pd
df = pd.read_csv(data)


# list of columns to be used

# select using column name
# cols = ['c{}'.format(i) for i in range(2,7)]

# select using column number
cols = df.columns[2:7]

# select if any col is 1
df = df[(df[cols]==1).any(axis=1)]



print(df)

name c1 c2 c3 c4 c5 c6 c7 c8
0 img1 0 1 1 0 0 0 1 0
2 img3 1 0 0 1 0 1 0 0

关于python - pandas:如何通过选择列范围来过滤行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59432918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com