我有一個大量的列的熊貓數據框,我需要找到哪些列是二進制的(只有值0或1),而不看數據。應該使用哪個函數?Pandas DataFrame中的哪些列是二進制的?
0
A
回答
3
據我所知,沒有直接的功能來測試這個。相反,您需要根據數據的編碼方式(例如1/0,T/F,True/False等)構建一些東西。另外,如果你的列有一個缺失值,整個列將被編碼爲一個float而不是int。
在下面的例子中,我測試所有唯一的非空值是'1'還是'0'。它返回所有這些列的列表。
df = pd.DataFrame({'bool': [1, 0, 1, None],
'floats': [1.2, 3.1, 4.4, 5.5],
'ints': [1, 2, 3, 4],
'str': ['a', 'b', 'c', 'd']})
bool_cols = [col for col in df
if df[[col]].dropna().unique().isin([0, 1]).all().values]
>>> bool_cols
['bool']
>>> df[bool_cols]
bool
0 1
1 0
2 1
3 NaN
0
要在答案擴大正上方,用value_counts()指數,而不是唯一的()應該做的伎倆:
bool_cols = [col for col in df if
df[col].dropna().value_counts().index.isin([0,1]).all()]
相關問題
- 1. pandas dataframe:如何計算二進制列中的1行數量?
- 2. 如何將pandas DataFrame中的值二進制化?
- 3. 在Pandas Dataframe中對列進行分組
- 4. Decile Pandas DataFrame列
- 5. Pandas中的DataFrame中的系列列表
- 6. 從Dataframe的列(python/pandas)繪製多行?
- 7. Python/Pandas - 在Pandas DataFrame的新列中複製索引
- 8. Pandas DataFrame列的掩碼
- 9. Pandas中的Dataframe行的數據幀列
- 10. 使用List Comprehension(Pandas)從DataFrame列表中刪除DataFrame的列
- 11. 拆分Pandas DataFrame中的列表
- 12. pandas DataFrame列中值的計數頻率
- 13. 在Python/Pandas DataFrame的列中按字符進行索引
- 14. Dataframe PANDAS
- 15. 在pandas DataFrame列中存儲列表
- 16. 在Pandas繪製二進制矩陣
- 17. 如何將二進制變量的DataFrame列變成多列虛擬變量
- 18. Groupby to Pandas中的Dataframe
- 19. Pandas DataFrame中的HTML格式
- 20. Pandas DataFrame列表 - Python 3.x
- 21. Pandas Dataframe時間序列
- 22. 如何樞軸熊貓DataFrame列創建二進制「價值表」?
- 23. 根據Pandas DataFrame中的值將行值複製到相鄰列
- 24. 從Pandas dataframe創建二維數組
- 25. 檢查字符串是否在pandas Dataframe列中,並創建新的Dataframe
- 26. cmake:找出哪些庫是一個二進制目標鏈接
- 27. 如果列是列表,是否可以過濾Pandas DataFrame列?
- 28. Python Pandas:在遍歷行時對DataFrame值進行一些更新
- 29. 刪除列表中列值的Pandas中的DataFrame行
- 30. DataFrame Pandas - 將多列列表展平列
感謝@Alexander。成功了! – na899
除''.unique()'外,其他作品從0.18.1開始看起來都不是有效的。 一個有點隱藏的技巧是,它適用於顯式布爾值的列,即'False','True',而不僅僅是'0'和'1'。這是因爲python顯然會自動投射; '[0,1]中的錯誤'返回'真' – ijoseph