如何在pandas数据帧中提取垂直条件下的行

2024-06-02 05:17:14 发布

您现在位置:Python中文网/ 问答频道 /正文

现在我有了下面的数据帧

    A B C   
1   a 0 6  
1   b 1 5
1   c 0 8
1   d 0 9
2   e 0 1
2   f 1 2 
2   g 0 3
3   h 0 4
3   i 0 5
3   j 0 6

首先,我想提取df.B==1

^{pr2}$

第二,我想提取列C(+-1)周围的行,在本例中,行c0 8紧挨着b15,但是df.C=8,所以这个列掉了。如果df.C=4或6这一行将被添加)它们是否相邻并不重要。在

  A B C
1 a 0 6
1 b 1 5
2 e 0 1
2 f 1 2
2 g 0 3

我想得到上面的数据帧。我该怎么做?在

首先我试过了

df[df.B==1]

但是,我想不出下一步。。在


Tags: 数据df本例c0pr2b15
2条回答
# find where `B` is one
bs = np.where(df.B.values == 1)[0]

# union `bs` with + 1 and - 1
idx = np.unique(np.concatenate([bs - 1, bs, bs + 1]))

# don't go below zero or above last row
idx = idx[(0 <= idx) & (idx < len(df))]

# use `iloc` to index correct rows
df.iloc[idx]

   A  B  C
1  a  0  6
1  b  1  5
1  c  0  8
2  e  0  1
2  f  1  2
2  g  0  3

好吧,这有点令人困惑(特别是因为你把数字从第一个例子改为第二个到第三个),但据我所知,你想要得到所有的行:

B==1

从这些行中,您需要从B==1
的C中得到索引值相等且C+-1的行(如果我弄错了,请纠正我)

我会用以下方法:

作为原始数据帧

^{pr2}$

希望是这样,如果这有助于投票/核对答案,和平伙伴!在

相关问题 更多 >