我不了解熊猫的以下奇怪转换行为:
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
答案 0 :(得分:0)
希望这对我有所帮助:
尝试覆盖该列,而不是将其分配给s
d = pd.DataFrame({'a':['x', 'y'], 'b': ['s', 't']})
d['a'] = d['a'].astype('|S1')
我一直习惯于使用.astype(str),但不确定您的具体情况。