熊猫将对象列转换为字符串类型

时间:2019-10-16 23:03:38

标签: python string pandas dtype

我不了解熊猫的以下奇怪转换行为:

d = pd.DataFrame({'a':['x', 'y'], 'b': ['s', 't']})
s = d['a'].astype('|S1')
print(s.dtypes)
d['a'] = s
print(d.dtypes)
print(s.dtypes)
print(d.astype('|S1').dtypes)

产生了输出:

|S1
a    object
b    object
dtype: object
|S1
a    |S1
b    |S1
dtype: object

当我将列转换为pd.Series时,它会被转换,但是当放回DataFrame时,它又恢复为Object。但是整个'DataFrame`都可以转换。有什么作用?

我一直在搜索文档以查找对此行为的一些参考,但没有发现任何线索。

为了完整起见,这是一个缩写版本:

python           : 3.7.3.final.0
python-bits      : 64
OS               : Windows
OS-release       : 10
machine          : AMD64
processor        : Intel64 Family 6 Model 158 Stepping 9, GenuineIntel

pandas           : 0.25.1
numpy            : 1.17.1

1 个答案:

答案 0 :(得分:0)

希望这对我有所帮助:

尝试覆盖该列,而不是将其分配给s

d = pd.DataFrame({'a':['x', 'y'], 'b': ['s', 't']})
d['a'] = d['a'].astype('|S1')

我一直习惯于使用.astype(str),但不确定您的具体情况。