gpt4 book ai didi

python - Pandas:.loc[...] 的类似列表的索引

转载 作者:行者123 更新时间:2023-11-30 22:35:39 24 4
gpt4 key购买 nike

我认为我错过了一些非常简单的东西,但我正在尝试使用类似列表的索引与 .loc[...] 来选择数据框中除最后一行之外的所有行。

设置:

import pandas as pd

df = pd.DataFrame({
'a':[1,2,3,4,5],
'b':[6,7,8,9,0]
})

尝试的代码:

df.loc[:-1, 'a'] = df.loc[:-1, 'b']

但是 df.loc[:-1, 'a'] 产生: Series([], Name: a, dtype: int64) 而不是该系列直到最后一行。

期望的结果:

   a  b
0 6 6
1 7 7
2 8 8
3 9 9
4 5 0

可以工作,但代码很糟糕:

df.loc[:df.shape[0] - 2, 'a'] = df.loc[:df.shape[0] - 1, 'b']

我的实际代码更复杂并且依赖于此代码,因此我不想完全重新发明轮子来获得所需的结果,我想我只是想知道是否有一种简单的方法来查找与 native 类似的行python 的 l[:-1].

最佳答案

您正在尝试将基于标签的索引与整数索引/切片混合在一起。您不能为此使用loc,它用于基于标签位置的索引。

Pandas 目前提供 ix 用于混合基于标签和整数的索引。但这将在未来版本中被弃用。

您可以做的一件事是在索引上使用基于整数的切片从索引中获取标签:

In [20]: df.loc[df.index[:-1], 'a']
Out[20]:
0 1
1 2
2 3
3 4
Name: a, dtype: int64

所以你的例子是:

In [22]: df.loc[df.index[:-1], 'a'] = df.loc[df.index[:-1], 'b']

In [23]: df
Out[23]:
a b
0 6 6
1 7 7
2 8 8
3 9 9
4 5 0

In [24]:

关于python - Pandas:.loc[...] 的类似列表的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44489629/

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