python - pandas 将对象列转换为字符串类型
问题描述
我不明白熊猫中以下奇怪的转换行为:
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
当我将列转换为 apd.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
解决方案
如果我理解这个问题,希望这会有所帮助:
尝试覆盖列而不是将其分配给 s
d = pd.DataFrame({'a':['x', 'y'], 'b': ['s', 't']})
d['a'] = d['a'].astype('|S1')
我一直习惯使用.astype(str),但不确定你的具体情况。
推荐阅读
- flutter - 没有 IgnorePointer 的列表菜单滚动
- javascript - 在 JavaScript 类方法中,即使使用箭头函数也无法在 addEventListener() 中使用“this”。如何解决这个问题
- python - 打开 npy 数组。可以查看但不能索引?
- android - ClassCastException:无法转换为 android.content.Context
- r - 如果前三个单元格在 R 中彼此相等,则合并行
- javascript - javascript : getElementById 返回 null
- ruby - WATIR - 设置复选框而不直接访问它
- google-apps-script - Google Apps 脚本中的日期选择器没有时区选择
- c - 取消引用“void *”指针
- r - R中的对角矩阵?