cod*_*000 12 python dataframe pandas
有时,当数据导入到Pandas Dataframe时,它总是作为类型导入object.这很好,适合做大多数操作,但我正在尝试创建自定义导出功能,我的问题是:
我知道我可以告诉Pandas这是int,str等类型..但是我不想这样做,我希望当用户导入或添加列时,pandas可以足够聪明地知道所有数据类型.
编辑 - 导入的例子
a = ['a']
col = ['somename']
df = pd.DataFrame(a, columns=col)
print(df.dtypes)
>>> somename object
dtype: object
Run Code Online (Sandbox Code Playgroud)
类型应该是字符串?
lmo*_*lmo 17
这只是部分答案,但您可以在整个DataFrame中获取变量中元素的数据类型的频率计数,如下所示:
dtypeCount =[df.iloc[:,i].apply(type).value_counts() for i in range(df.shape[1])]
Run Code Online (Sandbox Code Playgroud)
这回来了
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]
Run Code Online (Sandbox Code Playgroud)
它不能很好地打印,但您可以按位置提取任何变量的信息:
dtypeCount[1]
<class 'int'> 2
<class 'str'> 2
Name: b, dtype: int64
Run Code Online (Sandbox Code Playgroud)
这应该让你开始找到导致问题的数据类型以及有多少数据类型.
然后,您可以使用在第二个变量中检查具有str对象的行
df[df.iloc[:,1].map(lambda x: type(x) == str)]
a b c
1 1 n 4
3 3 g 6
Run Code Online (Sandbox Code Playgroud)
数据
df = DataFrame({'a': range(4),
'b': [6, 'n', 7, 'g'],
'c': range(3, 7)})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42922 次 |
| 最近记录: |