【问题标题】:Comparing previous row values in Pandas DataFrame in different column在不同列中比较 Pandas DataFrame 中的前行值
【发布时间】:2021-08-29 19:53:58
【问题描述】:

我的意见:

first=pd.Series([0,1680,5000,14999,17000])
last =pd.Series([4999,7501,10000,16777,21387])
dd=pd.concat([first, last], axis=1)

我尝试查找并比较第一列中的第二个值(例如1680),并在第一列中的第一个值与第二列中的第一个值之间“范围”前一行(例如从04999)。所以在我的条件值1680 落在04999 之间的上一行范围内,第一列5000 中的3td 值也在16807501 之间的上一行范围内,但其他值(例如14999, 17000) 不在之前行的范围内。
我的期望输出是这样的:
[1680], [5000] 所以只显示符合我条件的值
我尝试使用 diff(): dd[0].diff().gt(dd[1])reshape/shift 但并没有真正成功

【问题讨论】:

  • 你能把预期的数据框放上去吗?
  • 我并不是真的需要输出为 df,只有符合我条件的值,但如果解决方案为 df,它也会很棒

标签: python pandas


【解决方案1】:

使用shiftbetween 将一行与前一行进行比较:

>>> df[0].loc[df[0].between(df[0].shift(), df[1].shift())]
1    1680
2    5000
Name: 0, dtype: int64

shift的详细信息:

>>> pd.concat([df[0], df.shift()], axis=1)
       0        0        1
0      0      NaN      NaN
1   1680      0.0   4999.0
2   5000   1680.0   7501.0
3  14999   5000.0  10000.0
4  17000  14999.0  16777.0

【讨论】:

    猜你喜欢
    • 2017-05-14
    • 1970-01-01
    • 2023-01-11
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多