如何在python中检查df中所有列的dtypes是否相同?

如何解决如何在python中检查df中所有列的dtypes是否相同?

我是 Pandas 的新手,我想检查 df 的所有列是否相同。但是,我尝试这样做,但出现错误

print(df.columns)
Index(['age','car','car_name'],dtype='object') 

其中 age、car 是 int、float 和 car_name 是一个对象

for i in df:
    if df[i].dtypes == int or df[i].dtypes == float:
        print('yes')
    else:
        print('no')
this gives:
yes
yes
no

但我想要的是整体给出,就像如果所有列都有 int 或 float 它应该打印 yes 否则 no。 (通过使用 if else 条件)

异常输出

for i in df:
        if all column of df == int or all column of df == float:
            print('yes')
        else:
            print('no')
output: 'No'

解决方法

def is_same(df):
    # this method returns true if all types are same,else returns false
    no_of_types = len(df.dtypes.unique())
    is_same = no_of_types == 1
    return is_same

diff_types1 = pd.DataFrame({"a": [1,2,3],"b": [2,3,4],"c": ["A","C","E"]})
diff_types2 = pd.DataFrame({"a": [1,"b": [2.0,3.1,4.2],"c": [2,4,5]})
same_types = pd.DataFrame({"a": [1,5]})
same_types2 = pd.DataFrame({"a": ["A","E"],"b": ["A","E"]})

is_same(diff_types1)
# False

is_same(diff_types2)
# False

is_same(same_types1)
# True

is_same(same_types2)
# True
,

或者检查 where 是否大于 1 dtypes

df.dtypes.nunique()>1

如果您的 df 具有不同的 dtype,将返回 True

,

你可以使用

df.dtypes.drop_duplicates().shape[0]== 1

这是一个例子:

>>> import pandas as pd
>>> df = pd.DataFrame()
>>> df['a'] = 1,3
>>> df['b'] = 4,5,6
>>> df.dtypes.drop_duplicates().shape[0]== 1
True
>>> df['b'] = 0.1,0.2,0.3
>>> df.dtypes.drop_duplicates().shape[0]== 1
False
,
from pandas.api.types import is_numeric_dtype
def is_int_or_float(df):
    # this method returns true if all types are numeric
    is_numeric_types = sum([is_numeric_dtype(x) for x in df])
    return is_numeric_types

diff_types1 = pd.DataFrame({"a": [1,2.2,"E"]})

print(is_same(diff_types1))
# False

print(is_same(diff_types2))
# False

print(is_same(same_types1))
# True

print(is_same(same_types2))
# True
,

有很多方法可以解决这个问题。这是一种解决方案:

all(x == df.dtypes[0] for x in df.dtypes)

如果所有列的数据类型相同,则返回 true。

这个单行代码首先通过将 df.dtypes 中的所有条目与第一个元素的数据类型进行比较来创建一个布尔值列表。如果所有条目都为 all()

,则 True 函数返回 true

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?