为什么我不能分配给 Pandas DataFrame 的一部分?

2024-02-19

我很困惑为什么以下pandas未成功将 A 列的最后两个值分配给 B 列的前两个条目:

df = pd.DataFrame({'A': [1, 2, 3, 4, 5, 6, 7], 'B': [10, 20, 30, 40, 50, 60, 70]})
df = df.join(pd.DataFrame({'C': ['a', 'b', 'c', 'd', 'e', 'f', 'g']}))
df['B2'] = df.B.shift(2)
df[:2].B2 = list(df[-2:].A)

让我感到困惑的是,在(显然)等效的“真实”应用程序中,它似乎确实有效(并产生一些奇怪的行为 https://stackoverflow.com/q/22458039/656912).

为什么最终分配无法更改数据帧中两个条目的值?


It can工作,这就是为什么它是阴险的,请参见这里:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

一般来说,对于多种类型的框架,它取决于when它会起作用(例如,如果您一次创建所有内容,我认为它总是会起作用)。既然你正在创建它after(通过 join)它依赖于底层的 numpy 视图创建机制。

永远不要像这样分配,使用loc

df.loc[:2,'B2'] = ....
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我不能分配给 Pandas DataFrame 的一部分? 的相关文章

随机推荐