Python numpy列表分配索引超出范围

2024-04-26 17:53:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个以下格式的CSV文件

86,1
15,2
19,3
52,4
15,5
13,6
18,7
20,8
49,9
266,10

为了提高可复制性,我已经包括了完整的CSV file here。在第1列中,我想读取当前行并将其与前一行的值进行比较。如果它更大,我想取当前值与前一个值的差值,并将其存储在列表中(append)。如果当前值等于前一行的值,则继续比较。让我来吧清除。为了例如,在我提供的上述示例记录中,第三行(19)大于第二行(15)的值,因此它将是(19-15 =4)、第四行(52-19 = 33)等

下面是我使用numpy的简单方法

^{pr2}$

但是,我得到了错误IndexError: list assignment index out of range。如何修复此错误以解决我提到的任务?在


Tags: 文件csv方法numpy示例列表here格式
3条回答

使用熊猫^{}

data = StringIO("""86,1
15,2
19,3
52,4
15,5
13,6
18,7
20,8
49,9
266,10""")

df=pd.read_csv(data,header=None)

m1=df[0].diff().fillna(0)
#m1[m1>0].tolist()
#[4.0, 33.0, 5.0, 2.0, 29.0, 217.0]
m1[m1>0].median()
#17.0

基本上,np.diff()需要一个类似列表的输入,而您传递的是一个整数。这就是它失败的原因

我认为这是一个更好的方法

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

相关问题 更多 >