python - Python numpy - 列表分配索引超出范围
问题描述
我有以下格式的 CSV 文件
86,1
15,2
19,3
52,4
15,5
13,6
18,7
20,8
49,9
266,10
为了重现性,我在此处包含了完整的 CSV 文件。从第 1 列开始,我想读取当前行并将其与前一行的值进行比较。如果它更大,我想将当前值与前一个值的append
差值存储()到一个列表中。如果当前值等于前一行的值,则继续比较。让我说清楚。例如在我提供的上述示例记录中,第三行(19
)大于第二行(15
)中的值 - 所以它将是(19-15 =4
),第四行(52-19 = 33
)等。
这是我使用的简单方法numpy
import numpy as np
import pandas as pd
import csv
df = pd.read_csv("testdata.csv")
with open("testdata.csv") as f:
reader = csv.reader(f, delimiter=",")
for i in reader:
print (i[0])
diffs=np.diff(i[0])
increased_value=np.median(diffs[diffs>0])
但是,我收到错误消息IndexError: list assignment index out of range
。如何解决此错误以解决我提到的任务?
解决方案
我认为这是一个更好的方法
df = pd.read_csv("testdata.csv", header=None)
df
0 1
0 86 1
1 15 2
2 19 3
3 52 4
4 15 5
5 13 6
6 18 7
7 20 8
8 49 9
9 266 10
diffs = np.diff(df[0])
increased_value = np.median(diffs[diffs>0])
increased_value
17.0
推荐阅读
- python - 从标签python列表创建关联矩阵的快速方法?
- coq - 具有动态依赖关系的细粒度构建?
- android - Kotlin - 为什么我会在 moveCamera for Google Map 获得 KotlinNullPointerException
- node.js - 使用 CORS 策略的 Sails、React 和 Axios 错误:请求的资源上不存在“Access-Control-Allow-Origin”标头
- python - wxPython 出错 - 部分初始化的模块“wx”没有属性“框架”(很可能是由于循环导入)
- node.js - 如何让我的消息收集器监听提到的用户 Discord.js v12 发送的消息
- json - 在插入 pymongo 之前解析日期
- ios - 当我调用 struct 11 次但不是 10 次或更低时,“调用中的额外参数”
- c++ - 在arduino上显示输入数据的大小和整数的输入数据
- c# - 将 Json 数据传输到 C# 列表