【问题标题】:Append value to df row using lambda if else否则使用 lambda 将值附加到 df 行
【发布时间】:2023-02-14 22:13:31
【问题描述】:

你好专家我很惊讶通过比较其他列值将值附加到 df 的新列。我搜索了相关问题,但没有找到合适的答案。我是 python 的新手

我想通过使用 df.apply lambda 帮助比较 df 其他列的最后 4 个值,在每个元素的最后一行附加 df 的新列,在这方面高度赞赏。

我有以下 df:

    Symbol    open      close      sig
0   APPL      153.60    152.90      0
1   APPL      152.90    153.55      1
2   APPL      153.55    152.00      0
3   APPL      152.00    153.50      1
4   APPL      153.50    154.10      1

5   TSLA      193.00    192.10      0
6   TSLA      192.10    191.50      0
7   TSLA      191.50    192.90      1
8   TSLA      192.90    192.45      0
9   TSLA      192.45    191.10      0

我想比较除 1 行以外的 df['sig'] 列,依此类推所有股票,如果 sig 列的最后 4 个值 APPL 是 1011,那么第 4 行的 df ['signal'] 应该附加为 1(即最后一行每只股票的)如果 TSLA 的最后 4 个值 df['sig'] 是 0100 那么在第 9 行 df['signal'] 被附加为 0

通过使用 lambda 或 df.npwhere 等...

谢谢!

期待这个:

    Symbol    open      close      sig    signal
0   APPL      153.60    152.90      0      NaN
1   APPL      152.90    153.55      1      NaN
2   APPL      152.75    152.00      0      NaN
3   APPL      153.00    153.50      1      NaN
4   APPL      153.50    154.10      1      1

5   TSLA      193.00    192.10      0      NaN
6   TSLA      192.10    191.50      0      NaN
7   TSLA      191.50    192.90      1      NaN
8   TSLA      192.90    192.45      0      NaN
9   TSLA      192.45    191.10      0      0

【问题讨论】:

  • 除了严格匹配 1011/0100 之外,是否有附加 10 的一些基本逻辑?
  • 是的,如果蜡烛收盘 < open sig column append as 0 else candle close > open sig column as 1 如果 1 根蜡烛是绿色的,2 根红色的,3 根绿色的和 4 根蜡烛,我想购买股票这是基本逻辑

标签: python pandas dataframe


【解决方案1】:

您可以使用groupby.rolling

df['signal'] = (df.groupby('Symbol')['sig'].rolling(4)
                  .apply(lambda x: x.eq([1, 0, 1, 1]).all()).droplevel(0)
               )

输出:

  Symbol    open   close  sig  signal
0   APPL  153.60  152.90    0     NaN
1   APPL  152.90  153.55    1     NaN
2   APPL  152.75  152.00    0     NaN
3   APPL  153.00  153.50    1     0.0
4   APPL  153.50  154.10    1     1.0
5   TSLA  193.00  192.10    0     NaN
6   TSLA  192.10  191.50    0     NaN
7   TSLA  191.50  192.90    1     NaN
8   TSLA  192.90  192.45    0     0.0
9   TSLA  192.45  191.10    0     0.0

【讨论】:

    猜你喜欢
    • 2021-04-01
    • 2016-09-25
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 2016-10-25
    • 2021-11-07
    • 2021-03-02
    相关资源
    最近更新 更多