数据帧中逐单元格检测数据类型



我正试图使用以下代码检索pandas数据帧每个单元格中值的数据类型:

import pandas as pd
dfin = pd.read_csv(path, dtype=object)
d = {"<class 'datetime.datetime'>":'DateTime.Type',
"<class 'int'>": 'int',
"<class 'float'>": 'float',
"<class 'str'>": 'str'}
dftypes = df.applymap(type).astype(str).replace(d)

我的数据帧包含混合类型的列,"dtype=object"参数旨在保护单元格值的类型不被逐列自动定义。

当从xlsx文件(pd.read_xlsx(((读取dfin时,此代码生成并映射正确的数据类型,但当从标准csv文件(pd.read_csv(((读取时则不会生成和映射正确的数据类型。

我希望能够从csv中读取数据,然后逐个单元格确定数据类型,但它只检测为str或null(float(。这里有解决方案吗?或者你能推荐另一种方法来获得这个结果吗?

示例:

给定dfin:

列A列B列C
1.4NaN
"是">3.25

您是否可以使用try,except块尝试将字符串转换为float,然后转换为int,如果成功,则返回"float"或"int",如果不返回"str"?

例如

def get_data_type(value):
try:
float(value)
except ValueError:
return 'str'
else:
try:
int(value)
return 'int'
except ValueError:
return 'float'
dfin.applymap(get_data_type)

最新更新