pandas.Series.map取决于字典中条目的顺序?



我尝试使用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

相关内容

  • 没有找到相关文章

最新更新