如何在python中检查df中所有列的数据类型是否相同?

2024-03-28 16:01:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我是熊猫的新手,我想检查一下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'

Tags: ornonameindfforageif
3条回答
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,2,3], "b": [2.0,3.1,4.2], "c": [2, 4, 5]})
same_types = pd.DataFrame({"a": [1,2,3], "b": [2,3,4], "c": [2, 4, 5]})
same_types2 = pd.DataFrame({"a": ["A", "C", "E"], "b": ["A", "C", "E"], "c": ["A", "C", "E"]})

is_same(diff_types1)
# False

is_same(diff_types2)
# False

is_same(same_types1)
# True

is_same(same_types2)
# True

或者检查其中是否有超过1dtypes

df.dtypes.nunique()>1

如果df具有不同的数据类型,则将返回True

你可以用

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

下面是一个例子:

>>> import pandas as pd
>>> df = pd.DataFrame()
>>> df['a'] = 1, 2, 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

相关问题 更多 >