python - Python - 当另一列中的数字大于之前的数字时,将列中的 x 值保存到列表
问题描述
(我是新手,所以我可能不知道提出这个问题的最佳方法,但这里是)
顺便说一句,我正在使用熊猫!
当另一列中的数字大于之前的数字时,我正在寻找一种构造,每次将 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)
推荐阅读
- json - 快速将json数组解码为对象
- arrays - 谷歌表格 - 根据具有我选择日期的另一个单元格更改单元格文本
- excel - 将唯一值添加到从 PowerBI 中的多个表中检索到的列
- flutter - onPressed of an Image 我想将该图像放在其他页面的容器中,我该如何实现?
- haskell - 在 Haskell 中区分 [Char] 和 [[Char]] 的问题
- node.js - 基本快递服务器评论在顶部
- python - 如何在 Python 交互模式下启用命令行编辑?
- git - 无法将代码推送到 github 上的新分支
- python - ASR - Speech to Text - 如何通过将标签张量与音频样本数组的长度对齐来预处理音频文件的文字转录标签
- django - 如何重新组合 django 中的某些列?