我感到困惑,因为我无法一次修改两列.loc[:,['A', 'B'],我猜是因为它返回的是副本而不是视图.我在索引和选择数据中找不到关于何时返回视图以及何时返回副本的权威指南.
我使用的是熊猫0.18,我可以看到,在旧版本的文件(大熊猫0.13),它曾经说:"每当标签的数组或布尔矢量都参与了索引操作,结果将是一份"但我在当前的文档中找不到
pd.__version__
# u'0.18.0'
df = pd.DataFrame({'A': ['1', '2', '3', '4',
'5', '6', '7', '8'],
'B': ['1', '2', '3', '4',
'5', '6', '7', '8'],
'C': ['1', '2', '3', '4',
'5', '6', '7', '8']})
df.dtypes
#A object
#B object
#C object
#dtype: object
df2 = df.copy()
df2[['A', 'B']] = df2.loc[:,['A' , 'B']].astype(float) # Works
df2.dtypes
#A float64
#B float64
#C object
#dtype: object
df2 = df.copy()
df2.loc[:,['A', 'B']] = df2.loc[:,['A' , 'B']].astype(float) # Does NOT work
df2.dtypes
#A object
#B object
#C object
#dtype: object
Run Code Online (Sandbox Code Playgroud)
没有人提出SettingWithCopy警告.所以我对为什么有点困惑,这项df2.loc[:, ['A', 'B']]任务没有任何效果.
仔细观察后我看到,它不是一个副本,因为在另一项测试,我做了分配不同值的数据帧和我他们"拯救"中df2,但该dtypes的df2不能被"套"通过.loc[:, ['A', 'B']]分配.
有没有理由为什么.loc[:, ['A', 'B']] =赋值不会改变dtypes [['A', 'B']] =呢?
| 归档时间: |
|
| 查看次数: |
850 次 |
| 最近记录: |