Python 如何知道数据帧单元的类型

Python 如何知道数据帧单元的类型,python,excel,pandas,dataframe,Python,Excel,Pandas,Dataframe,我有一个数据帧,例如: 1 1.3 2,5 4 5 通过以下代码,我试图了解熊猫数据帧的不同单元格的类型: for i in range (len(data.columns)) : print (" lenth of columns : " + str(len(data.columns)) ) for j in range (len(data[i])) : data[i][j]=re.su

我有一个数据帧,例如:

1
1.3
2,5
4
5
通过以下代码,我试图了解熊猫数据帧的不同单元格的类型:

for i in range (len(data.columns)) :
                print (" lenth of  columns : " + str(len(data.columns)) )
                for j in range (len(data[i])) :
                    data[i][j]=re.sub(r'(\d*)\.(\d*)',r'\1,\2',str(data[i][j]))
                    print(str(data[i][j]))

                    print(" est de type : "type(data[i][j]))
                    if str(data[i][j]).isdigit():
                        print(str(data[i][j]) + " contain a number  " )
问题是,当数据帧的一个单元格包含一个点时,pandas认为它是一个字符串。所以我用正则表达式,把点变成逗号

但是在那之后,我所有的数据帧单元格的类型都变成了字符串。我的问题是:如何知道数据帧的单元格是int还是float?我已经尝试了
isinstance(x,int)

编辑:如何使用df.apply(type)的输出计算int和float的数量例如,我想知道我的列中有多少单元格是int或float

我的第二个问题是,为什么当我有2.5时,数据帧会给他str类型

    0       <class 'int'>
1       <class 'str'>
2     <class 'float'>
3     <class 'float'>
4       <class 'int'>
5       <class 'str'>
6       <class 'str'>
0
1.
2.
3.
4.
5.
6.

谢谢。

如果您有不同类型的专栏,例如

>>> df = pd.DataFrame(data = {"l": [1,"a", 10.43, [1,3,4]]})
>>> df
           l
0          1
1          a
2      10.43
4  [1, 3, 4]
Pandas将只声明此
系列
属于数据类型
对象
。但是,只需应用
type
函数即可获得每个条目类型

>>> df.l.apply(type)
0     <type 'int'>
1     <type 'str'>
2     <type 'float'>
4     <type 'list'>
>>df.l.apply(类型)
0
1.
2.
4.

但是,如果数据集具有非常不同的数据类型,则可能应该重新考虑其设计。

df['col_name'].dtype
?欢迎使用SO。请提供一份报告。另请参见:列的可能副本不会有混合的数据类型,它将默认为某个
对象
类型如果它是混合的Hanks,我想知道为什么在我的panda数据框中,带点的数字2.5是一个?
2.5
是一个浮点数<代码>“2.5”是一个str。默认情况下,您必须手动将所有数字转换为浮点/整数。熊猫通常能正确推断类型。但是混合类型很难做到这一点。答案很好,但我相信OP要求的是一个完整的数据帧,而不仅仅是一列。例如,如果我执行
df.apply(type)
,它将打印出每列的类型,而不是每个单元格的类型。@如果需要每个单元格,请使用
df.applymap(type)