有时,当数据导入到熊猫数据帧时,它总是以类型object导入。这对于大多数操作来说都很好,但是我正在尝试创建一个自定义导出函数,我的问题是:
有没有办法强迫熊猫推断输入数据的数据类型?
如果没有,是否有方法在加载数据后以某种方式推断数据类型?
我知道我可以告诉熊猫这是类型int,str等。但我不想这样做,我希望当用户导入或添加列时,熊猫能够足够聪明地知道所有数据类型。
编辑-导入示例

a = ['a']
col = ['somename']
df = pd.DataFrame(a, columns=col)
print(df.dtypes)
>>> somename    object
dtype: object

类型应该是字符串?

最佳答案

这只是一个部分答案,但是您可以在整个数据帧中获取变量中元素的数据类型的频率计数,如下所示:

dtypeCount =[df.iloc[:,i].apply(type).value_counts() for i in range(df.shape[1])]

这个返回
dtypeCount

[<class 'numpy.int32'>    4
 Name: a, dtype: int64,
 <class 'int'>    2
 <class 'str'>    2
 Name: b, dtype: int64,
 <class 'numpy.int32'>    4
 Name: c, dtype: int64]

它不能很好地打印这个,但是您可以按位置提取任何变量的信息:
dtypeCount[1]

<class 'int'>    2
<class 'str'>    2
Name: b, dtype: int64

您应该从哪一个方面着手找出导致问题的数据类型以及有多少数据类型。
然后,可以使用
df[df.iloc[:,1].map(lambda x: type(x) == str)]

   a  b  c
1  1  n  4
3  3  g  6

数据
df = DataFrame({'a': range(4),
                'b': [6, 'n', 7, 'g'],
                'c': range(3, 7)})

关于python - 确定Pandas Column DataType,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41262370/

10-08 21:42