我有一個簡單的 python 3.8 DataFrame,有 8 列(簡單地標記為 0、1、2 等),大約有。3500 行。我想要這個 DataFrame 的一個子集,其中每行至少有 2 列高于 1。我不想單獨檢查每一列,但能夠檢查所有列。我知道我可以使用 .any(1) 檢查所有列,但我需要至少有 2 列滿足閾值,而不僅僅是一列。任何幫助,將不勝感激。示例代碼如下:
import pandas as pd
df = pd.DataFrame({0:[1,1,1,1,100],
1:[1,3,1,1,1],
2:[1,3,1,1,4],
3:[1,1,1,1,1],
4:[3,4,1,1,5],
5:[1,1,1,1,1]})
我認為稍后排序/過濾的最簡單方法是在 df[9] 末尾創建另一列來容納計數:
df[9] = df.apply(lambda x: x.count() if x > 2, axis=1)
這段代碼不起作用,但我覺得它很接近?
uj5u.com熱心網友回復:
xlambda 中的值是一個系列,可以這樣索引。
df[9] = df.apply(lambda x: x[x > 2].count(), axis=1)
uj5u.com熱心網友回復:
df[(df>1).sum(axis=1)>=2]
解釋:
(df>1).sum(axis=1)給出該行中大于 1 的列數。- 然后
>=2我們過濾那些至少有 2 列滿足條件的行——我們按照上一個專案符號中的解釋進行計數
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/369903.html
