我正试图使用以下代码检索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.4 | NaN | ||
"是"> | 3.2 | 5 |
您是否可以使用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)