【发布时间】:2021-05-21 23:59:41
【问题描述】:
在我的环境中,为了简单起见,决定将所有内容作为字符串存储在 hdfs 中。因此,当我从这个位置将数据拉入 pandas 数据框时,每种类型都是一个字符串,尽管值是整数、浮点数、布尔值等......
有没有办法根据值评估动态确定列属性类型?即:看看列中的每个值都是'x'类型,然后这样转换?
编辑:
由于我的 python 版本(我认为),我无法获得以下解决方案。所以我决定自己尝试一个hacky解决方案。这可能并不完美,我还没有确定日期。由于这两件事,我不会将其作为解决方案发布,但也许这可以成为其他需要它的人的起点:
#get dtypes when we can - Doesn't do dates.
for i in df:
try:
df[i] = df[i].astype(int)
print(i, 'is an int')
except:
[]
try:
if '.' in str(df[i]):
df[i] = df[i].astype(float)
print(i, 'is a float')
except:
[]
try:
if df[i].replace('False', '').unique()=='True' or df[i].replace('False', '').unique() == 'TRUE':
df[i] = df[i].replace('False', '').astype(bool).astype(int)
print(i, 'is bool')
except:
print(i, 'is an object')
基本上,我只是在尝试强制转换并捕获错误(如果它中断)。不过,我确信这可能是一种非常糟糕的方法。
【问题讨论】:
标签: python pandas types implicit-conversion