我有一个数据框,例如:
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)
编辑:我如何计算int和float的数量,以及df.apply(type)的输出,例如,我想知道我的列的多少个单元格是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 :(得分:2)
如果您有不同类型的列,例如
>>> 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只会声明此Series
是dtype object
。但是,您只需应用type
函数
>>> df.l.apply(type)
0 <type 'int'>
1 <type 'str'>
2 <type 'float'>
4 <type 'list'>
但是,如果您的数据集具有非常不同的数据类型,您可能应该重新考虑其设计。