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)
作为函数:
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)
(我是新手,所以我可能不知道提出这个问题的最佳方式,但这里是)
我正在使用 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)
作为函数:
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)