【问题标题】:with pandas boolean indexing, can I access the previous element?使用 pandas 布尔索引,我可以访问前一个元素吗?
【发布时间】:2019-12-01 23:16:55
【问题描述】:

(这里是熊猫初学者)

假设有 2 个系列:a 和 b

以及以下代码:

c = a[b > 0]

如何访问 b 的先前值以获得类似的东西

c = a[b_from_previous_index > 0]

另外,pandas 如何处理索引为 0 的情况?

【问题讨论】:

标签: python pandas


【解决方案1】:

我相信这是 Syntax to select previous row in pandas after filtering 的一个有点隐藏的副本,但是为了后代:

a = pd.Series([-3,4,-1,-5,2,9,1])
print(a)

0   -3
1    4
2   -1
3   -5
4    2
5    9
6    1
dtype: int64

b = pd.Series(np.arange(7))
print(b)

0    0
1    1
2    2
3    3
4    4
5    5
6    6
dtype: int64

b[(a<0).shift(-1).fillna(False)]

1    1
2    2
dtype: int64

您可以向后使用shift 在比赛前获取系列一的索引。 0 索引由fillna 方法处理,您可以通过将其更改为.fillna(True)

注意:您不能将此留空,因为 pandas 布尔数组不能包含 NaN(默认情况下用于填充这些空格)。

【讨论】:

    【解决方案2】:
    c = a[1:]
    

    将为您提供第二个值/位置或“1”以及后面的所有值

    c = a[0]
    

    将为您提供系列或列表中的第一个值/第一个位置

    c = a[:x]
    

    将为您提供列表/系列索引中该位置之前的所有值

    c = a[x:x]
    

    将根据您的列表/系列的索引为您提供一个范围内的值

    这是否回答了您的问题?如果没有给我更多说明或您正在寻找的输出示例,我应该能够提供帮助

    【讨论】:

    • 我喜欢 Scott 的回答,听起来更像你要找的东西
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 2014-06-16
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    相关资源
    最近更新 更多