python— Dataframe 中填充条件的所有行的快速求和

rhfm7lfc  于 2021-08-20  发布在  Java
关注(0)|答案(2)|浏览(327)

我有一个Pandas数据框,看起来像这样:

df = pd.DataFrame(np.array([[1,1, 0], [5, 1, 4], [7, 8, 9]]),columns=['a','b','c'])

   a  b  c
0  1  1  0
1  5  1  4
2  7  8  9

我想找到第一列,其中该列中的大多数元素都等于1.0。
我目前有以下代码,可以工作,但在实践中,我的 Dataframe 通常有数千列,而这段代码是我的应用程序的性能关键部分,因此我想知道是否有办法更快地完成这项工作。

for col in df.columns:
    amount_votes = len(df[df[col] == 1.0])
    if amount_votes > len(df) / 2:
       return col

在这种情况下,代码应该返回“b”,因为这是大多数元素等于1.0的第一列

qvsjd97n

qvsjd97n1#

尝试:

print((df.eq(1).sum() > len(df) // 2).idxmax())

印刷品:

b
uqdfh47h

uqdfh47h2#

查找值超过一半等于1.0的列

cols = df.eq(1.0).sum().gt(len(df)/2)

获取第一个:

cols[cols].head(1)

相关问题