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

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

我正在使用 pandas 顺便说一句!

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

NumberColumn   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

希望新列表最终包含:

List1 = [6,23,26,2,1,3,4,6,9]

但它们也可能重叠:

NumberColumn       Value
    27             4
    28             5    # <--
    NaN            8    # <--
    29             6    # <--   <-- overlap!
    29             23         # <--
    29             26         # <--

希望这里的列表将包含:

List1 = [5, 8, 6, 6, 23, 26]

感谢您帮助我!

【问题讨论】:

    标签: python pandas list dataframe overlap


    【解决方案1】:

    假设数字不能小于0:

    list1 = []
    x=3
    
    df.fillna(value=0, inplace=True)
    for i in range(1, len(df)):
        if df.loc[i, 'NumberColumn']>df.loc[i-1, 'NumberColumn']:
            list1 = list1 + df.loc[i:i+x-1, 'Value'].values.tolist()
    print(list1)
    

    作为一个函数:

    def createList(df, x):
        list1 = []
        df.fillna(value=0, inplace=True)
        for i in range(1, len(df)):
            if df.loc[i, 'NumberColumn']>df.loc[i-1, 'NumberColumn']:
                list1 = list1 + df.loc[i:i+x-1, 'Value'].values.tolist()
        return list1
    
    list1 = createList(df, x=3)
    print(list1)
    

    【讨论】:

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