我有一个大量的列的熊猫数据框,我需要找到哪些列是二进制的(只有值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. 从Dataframe的列(python/pandas)绘制多行?
- 6. Pandas DataFrame列的掩码
- 7. Pandas中的Dataframe行的数据帧列
- 8. 使用List Comprehension(Pandas)从DataFrame列表中删除DataFrame的列
- 9. pandas DataFrame列中值的计数频率
- 10. 拆分Pandas DataFrame中的列表
- 11. 在Python/Pandas DataFrame的列中按字符进行索引
- 12. Dataframe PANDAS
- 13. 如何将二进制变量的DataFrame列变成多列虚拟变量
- 14. 在pandas DataFrame列中存储列表
- 15. 如何枢轴熊猫DataFrame列创建二进制“价值表”?
- 16. Pandas DataFrame中的HTML格式
- 17. 根据Pandas DataFrame中的值将行值复制到相邻列
- 18. Pandas DataFrame列表 - Python 3.x
- 19. 检查字符串是否在pandas Dataframe列中,并创建新的Dataframe
- 20. cmake:找出哪些库是一个二进制目标链接
- 21. Python Pandas:在遍历行时对DataFrame值进行一些更新
- 22. DataFrame Pandas - 将多列列表展平列
- 23. 如何获得一列中哪些列在Pandas中的某些值内?
- 24. Pandas Dataframe:在列中设置最大值
- 25. 如何从pandas DataFrame中提取子列?
- 26. 在Pandas DataFrame中对子序列进行编号
- 27. Hbase1.2.1 to pandas dataframe
- 28. 从列表中更改Pandas Dataframe中的列名称
- 29. Pandas,DataFrame:将一列分成多列
- 30. 将Pandas DataFrame列拆分为两列
感谢@Alexander。成功了! – na899
除''.unique()'外,其他作品从0.18.1开始看起来都不是有效的。 一个有点隐藏的技巧是,它适用于显式布尔值的列,即'False','True',而不仅仅是'0'和'1'。这是因为python显然会自动投射; '[0,1]中的错误'返回'真' – ijoseph