我怎么知道Pandas的类型

2024-04-25 12:38:23 发布

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

我有一个数据帧,例如:

1
1.3
2,5
4
5

通过下面的代码,我试图知道我的pandas数据框的不同单元的类型:

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'>

谢谢。


Tags: columns数据in类型pandasfordatalen
1条回答
网友
1楼 · 发布于 2024-04-25 12:38:23

如果有不同类型的列,例如

>>> 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]

熊猫只会声明这个Series是数据类型object。但是,您可以通过简单地应用type函数来获取每个条目类型

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

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

相关问题 更多 >