我尝试使用map方法将pandas DataFrame的数据类型映射到不同的名称。它适用于字典参数中数据类型的3种排列中的2种。但是第三个忽略了'int64'。字典键的顺序是重要的吗还是我在这里漏掉了什么?
import pandas as pd
df = pd.DataFrame({
'x': [1,2,3],
'y': [1.0, 2.2, 3.5],
'z': ['one', 'two', 'three']
})
df.dtypes
df.dtypes.map({'int64': 'integer', 'float64': 'decimal', 'object': 'character'}) # works
df.dtypes.map({'object': 'character', 'float64': 'decimal', 'int64': 'integer'}) # works
df.dtypes.map({'float64': 'decimal', 'int64': 'integer', 'object': 'character'}) # NaN for x
dtypes
返回的Series中的数据不是str
类型的,而是dtype
类型的,这似乎导致了map
在传递键类型为str
的字典时的不确定性行为。
dtypes
上使用astype(str)
:
print( df.dtypes.astype(str).map({'int64': 'integer', 'float64': 'decimal', 'object': 'character'}) )
print( df.dtypes.astype(str).map({'object': 'character', 'float64': 'decimal', 'int64': 'integer'}) )
print( df.dtypes.astype(str).map({'float64': 'decimal', 'int64': 'integer', 'object': 'character'}) )
输出:
x integer
y decimal
z character
dtype: object
x integer
y decimal
z character
dtype: object
x integer
y decimal
z character
dtype: object