gpt4 book ai didi

python-3.x - Pandas - 用于设置值的 reindex 与 loc 的行为/问题

转载 作者:行者123 更新时间:2023-12-04 14:20:47 25 4
gpt4 key购买 nike

我一直在尝试在 pandas 中使用 reindex 而不是 loc 从 0.24 开始有关于使用列表重新索引的警告。

我遇到的问题是我使用 loc 更改数据帧的值。
现在,如果使用重新索引,我会失去它,如果我想变得聪明,我什至会遇到错误。

考虑以下情况:

df = pd.DataFrame(data=pd.np.zeros(4, 2), columns=['a', 'b'])
ds = pd.Series(data=[1]*3)

我想更改值的子集(同时保留其他值),因此 df 保持相同的形状。

所以这是有效的原始行为(并将 df['a'] 的子集中的值更改为 1)

df.loc[range(3), 'a'] = ds

但是当我使用重新索引时我无法更改任何内容:

df.reindex(range(3)).loc['a'] = ds

现在当我尝试这样的事情时:

df.loc[:, 'a'].reindex(range(3)) = ds

我收到一条 SyntaxError: can't assign to function call 错误消息。

作为引用,我使用的是 pandas 0.24 和 python 3.6.8

最佳答案

@coldspeed 的快速回答是最简单的,尽管警告的行为具有误导性。所以当 loc 没有时,reindex 返回一个副本。来自 Pandas 文档:

A new object is produced unless the new index is equivalent to the current one and copy=False.

所以根据警告说 reindexloc 的替代方法实际上是误导。

希望这对面临同样情况的人有所帮助。

关于python-3.x - Pandas - 用于设置值的 reindex 与 loc 的行为/问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55107480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com