【问题标题】:Update: How to compare values in 3 consecutive rows in pandas dataframe?更新:如何比较熊猫数据框中连续 3 行的值?
【发布时间】:2018-07-30 20:59:04
【问题描述】:

我正在寻找一种解决方案,该解决方案将比较 3 行连续数据中的值并在条件为真时更新列。

import pandas as pd aapl = pd.read_csv(....)
aapl['3lows'] = False
aapl.head(10)

输出是表格,其中每一行都有列

Row number/ Date / Open / High / Low / Close / Adj Close / Volume / 3lows
0 / 2006-01-03 / 10.340000 / 10.678572 / 10.321428 / 10.678572 / 9.572629 / 201808600 / False

现在我想运行一些“脚本”来将列 3lows 更新为 true,如果正在更新的行中列 Low 中的值,例如100 比第 99 行低,99 比 98 低,98 比 97 低。

【问题讨论】:

  • 嗨@Radovan。欢迎来到堆栈溢出。本网站旨在帮助您解决问题,而不是完全为您解决问题。你能发布一些你迄今为止尝试过的代码吗?
  • 此外,包括示例输入和预期输出的列表对于回答您的问题的人非常有帮助。解决您的问题,我相信移动列可能是您想要的方式,但是如果没有示例输入/输出就很难判断。

标签: python pandas


【解决方案1】:

IIUC:

让我们使用这样的东西:

#where is is the s = appl['Low']; let's make up some data
s = pd.Series([100,99,98,97,99,100,99,95,94,93,92,100,95])

s.diff().rolling(3).max().lt(0)

返回:

0     False
1     False
2     False
3      True
4     False
5     False
6     False
7     False
8      True
9      True
10     True
11    False
12    False
dtype: bool

详情:

s

输出:

0     100
1      99
2      98
3      97
4      99
5     100
6      99
7      95
8      94
9      93
10     92
11    100
12     95
dtype: int64

使用diff将每个值与之前的值进行比较:

s.diff()

输出:

0     NaN
1    -1.0
2    -1.0
3    -1.0
4     2.0
5     1.0
6    -1.0
7    -4.0
8    -1.0
9    -1.0
10   -1.0
11    8.0
12   -5.0
dtype: float64

现在,让我们看看一个包含 3 个值的滚动窗口,如果最大值小于零,那么一个值会出现三个下降:

s.diff().rolling(3).max().lt(0)

输出:

0     False
1     False
2     False
3      True
4     False
5     False
6     False
7     False
8      True
9      True
10     True
11    False
12    False
dtype: bool

现在,让我们将我们的结果与原始数据进行比较:

print(pd.concat([s,s.diff().rolling(3).max().lt(0)], axis=1))

      0      1
0   100  False
1    99  False
2    98  False
3    97   True
4    99  False
5   100  False
6    99  False
7    95  False
8    94   True
9    93   True
10   92   True
11  100  False
12   95  False

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多