【问题标题】:Python - save x values from a column to list when a number in another column is bigger than the number before 2Python - 当另一列中的数字大于2之前的数字时,将列中的x值保存到列表中
【发布时间】:2020-06-05 15:49:29
【问题描述】:

(嗨,我是新手,所以我可能不知道提出这个问题的最佳方法,但这里是)

顺便说一句,我正在使用熊猫!

当另一列中的数字大于之前的数字时,我正在寻找一种构造,每次将 x 值(假设 x=3,所以三个值)从一列保存到列表中。不应考虑第一个数字。需要注意的是,数字列 (NaN) 中也存在缺失数据。

Number         Value
23             4
23             5
NaN            8
24             6    # <--
24             23
24             26
24             11
25             2    # <--
25             1
25             3
25             5
Nan            9
26             4    # <--
26             6
NaN            9
26             12

希望新列表最终包含:

List = [6, 2, 4]

感谢您帮助我!

【问题讨论】:

    标签: python pandas list dataframe


    【解决方案1】:

    IIUC,尝试ffill,然后比较series.diff()是否大于0,然后在x中切片你想要的元素数量(这里是3):

    x=3
    df.loc[df['NumberColumn'].ffill().diff().gt(0),'Value'].tolist()[:x]
    #[6, 2, 4]
    

    【讨论】:

    • 这成功了!惊人的!我在我的问题中将列名从“NumberColumn”更改为“Number”,但您的方法确实有效!谢谢!
    【解决方案2】:

    你可以运行:

    df.Value[df.Number.shift().ffill() < df.Number].tolist()[:3]
    

    (将 3 替换为您选择的数字)。

    【讨论】:

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