[英]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.