uda*_*day 46 python python-3.x pandas
对于熊猫,任何人都知道,如果有任何数据类型
(ⅰ) ,float64(int64 和的其它变体np.number等float32,int8等)
(ⅱ) bool
(iii)datetime64,timedelta64
如字符串列,总有一个dtype的object?
或者,我想知道,如果除上述列表中的(i),(ii)和(iii)之外还有任何数据类型,那么pandas它不是dtype一个object?
小智 32
pandas借用它的dtypes numpy.有关此演示,请参阅以下内容:
import pandas as pd
df = pd.DataFrame({'A': [1,'C',2.]})
df['A'].dtype
>>> dtype('O')
type(df['A'].dtype)
>>> numpy.dtype
Run Code Online (Sandbox Code Playgroud)
您可以numpy.dtypes 在文档中找到有效列表:
'?' 布尔
'b'(带符号)字节
'B'无符号字节
'i'(签名)整数
'u'无符号整数
'f'浮点
'c'复杂浮点
'm'timedelta
'M'日期时间
'O'(Python)对象
'S','a'以零结尾的字节(不推荐)
'U'Unicode字符串
'V'原始数据(无效)
pandas应该支持这些类型.使用具有上述任何选项astype的pandas.Series对象的方法作为输入参数将导致pandas尝试将其转换Series为该类型(或者至少回退到object类型); 'u'是唯一一个我看pandas不懂的人:
df['A'].astype('u')
>>> TypeError: data type "u" not understood
Run Code Online (Sandbox Code Playgroud)
这是一个numpy错误,因为'u'需要后跟一个数字,指定每个项目的字节数(需要有效):
import numpy as np
np.dtype('u')
>>> TypeError: data type "u" not understood
np.dtype('u1')
>>> dtype('uint8')
np.dtype('u2')
>>> dtype('uint16')
np.dtype('u4')
>>> dtype('uint32')
np.dtype('u8')
>>> dtype('uint64')
# testing another invalid argument
np.dtype('u3')
>>> TypeError: data type "u3" not understood
Run Code Online (Sandbox Code Playgroud)
总而言之,对象的astype方法pandas将尝试用任何有效的参数做一些合理的事情numpy.dtype.请注意,将参数传递给方法numpy.dtype('f')也是相同的numpy.dtype('float32'),numpy.dtype('f8')也是相同的.numpy.dtype('float64')pandas astype
要在NumPy中找到相应的数据类型类,Pandas文档建议:
def subdtypes(dtype):
subs = dtype.__subclasses__()
if not subs:
return dtype
return [dtype, [subdtypes(dt) for dt in subs]]
subdtypes(np.generic)
Run Code Online (Sandbox Code Playgroud)
输出:
[numpy.generic,
[[numpy.number,
[[numpy.integer,
[[numpy.signedinteger,
[numpy.int8,
numpy.int16,
numpy.int32,
numpy.int64,
numpy.int64,
numpy.timedelta64]],
[numpy.unsignedinteger,
[numpy.uint8,
numpy.uint16,
numpy.uint32,
numpy.uint64,
numpy.uint64]]]],
[numpy.inexact,
[[numpy.floating,
[numpy.float16, numpy.float32, numpy.float64, numpy.float128]],
[numpy.complexfloating,
[numpy.complex64, numpy.complex128, numpy.complex256]]]]]],
[numpy.flexible,
[[numpy.character, [numpy.bytes_, numpy.str_]],
[numpy.void, [numpy.record]]]],
numpy.bool_,
numpy.datetime64,
numpy.object_]]
Run Code Online (Sandbox Code Playgroud)
Pandas接受这些类作为有效类型.例如,dtype={'A': np.float}.
NumPy文档包含更多详细信息和图表:
| 归档时间: |
|
| 查看次数: |
59041 次 |
| 最近记录: |