根据条件从列中获取中间值



我有一个3列的数据框架。我需要在C = 1时从C的中间得到A和B的值。如果C = 1的数量是偶数,我想要中间的第一个

例如,这一个用于奇数C = 1

A B C
w y 0
c v 0
t o 1
e p 1
t b 1
u e 0
q p 0

C = 1时中间的行

A B C  
e p 1
因此,它应该返回

df_return

A B C
e p 1 

为偶数时

df_return

A B C
w y 0
c v 0
t o 1
e p 1
t b 1
u e 1
r e 1
u f 1
q p 0

当C = 1时中间的为

A B C
t b 1
u e 1

但是,我只想要其中的一个,它应该是第一个。所以df_return

A B C
t b 1

我该怎么做?

你应该知道的一件事是A和B是有序的

关注相关部分,丢弃持有零的行:

df = df[df.C == 1]

现在很简单了。只需根据长度或.shape找到中点。

if len(df) > 0:
mid = (len(df) - 1) // 2
return df.iloc[mid, :]

最新更新