繁体   English   中英

Python - 当另一列中的数字大于之前的数字时,将列中的 x 值保存到列表中

[英]Python - save x values from a column to list when a number in another column is bigger than the number before

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

我正在使用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]

谢谢你的协助 !

假设数字不能小于 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)

作为 function:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM