簡體   English   中英

迭代多個 Pandas 列並獲取頻率值

[英]Iterate over multiple Pandas columns and get frequency values

我有這個問題,我需要遍歷一個有 500 列的 Pandas 數據框,並獲取一個列列表,其中一個值只出現一次。

前任:

df2 = pd.DataFrame({'X': [1, 0, 0 , 0], 'Y': [1, 0, 0 , 1], 'Z': [1, 0, 1 , 1]})

我需要的 :

最小出現次數為 1 的列列表,在本例中為 X 和 Z,因為對於 X,我們有 1 - 1 次和 0 -3 次,與 Z 相同,有 1 - 3 次和 0 - 1 次,所以 X 和 Z 的值只出現一次。

我已經通過熊貓項目創建了一個迭代

for k in df2.columns:
    print(k)
    display(pd.DataFrame(df2[k].value_counts()))
    for p in df2[k].value_counts():
        #pd.DataFrame(df2[k].value_counts()).T.iterrows():
        #if z > 1:
        print("p",p)
        if p==1:
            print(k)

我已經測試了這個解決方案,

df2['count'] = df2.groupby(['X', 'Y'], axis=1).cumcount() 

但結果是 Row 的累計計數,而不是我所需要的。

我嘗試轉換為系列,經過測試,轉換為 Pandas 數據幀,但我對如何在第二個循環中進行迭代並選擇值感到困惑

謝謝你,如果你能幫忙

根據給定的描述,這似乎可行:

[col for col in df2.columns if any(i==1 for i in df2[col].value_counts().values)]

['X', 'Z']

交替檢查每一列並打印它是否符合條件:

for col in df2:
    print(any(i==1 for i in df2[col].value_counts().values))

True
False
True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM