我需要遍历CSV文件中的某些行,例如,从231行到252行。然后,我想将通过计算每一行得到的值相加,并除以我遍历的行数。我该怎么做?
我是熊猫的新手,所以我非常感谢您的帮助。
我有一个来自Yahoo Finance的CSV文件,看起来像这样(它有更多行):
Date,Open,High,Low,Close,Adj Close,Volume
2019-06-06,31.500000,31.990000,30.809999,31.760000,31.760000,1257700
2019-06-07,27.440001,30.000000,25.120001,29.820000,29.820000,5235700
2019-06-10,32.160000,35.099998,31.780001,32.020000,32.020000,1961500
2019-06-11,31.379999,32.820000,28.910000,29.309999,29.309999,907900
2019-06-12,29.270000,29.950001,28.900000,29.559999,29.559999,536800
我已经完成了导入熊猫的基本步骤。然后,我添加了两个与不同列对应的变量,以轻松地仅引用该列。
import pandas as pd
df = pd.read_csv(file_name)
high = df.High
low = df.Low
然后我尝试做这样的事情。我尝试在变量中使用.loc,但这似乎不起作用。这也许是超级傻瓜,但我真的是熊猫新手。
dates = df.loc[231:252, :]
for rows in dates:
# calculations here
# for example:
print(high - low)
# I would have a more complex calculation than this but
# but for simplicity's sake let's stick with this.
输出为每行打印出高-低的1-252,例如:
...
231 3.319997
232 3.910000
233 1.050001
234 1.850001
235 0.870001
...
但是我只希望此输出在一定数量的行上。
然后,我想将所有这些值加起来并除以我循环的行数。这部分很简单,因此您不需要在答案中包括它,但是可以。
答案 0 :(得分:0)
.loc
按标签切片。对于整数切片,请使用.iloc
dates = df.iloc[231:252]
答案 1 :(得分:0)
使用skiprows
and nrows
。通过将以1开头的范围传递给skiprows
,以保持Python Pandas read_csv skip rows but keep header的标题。
In [9]: pd.read_csv("t.csv",skiprows=range(1,3),nrows=2)
Out[9]:
Date Open High Low Close Adj Close Volume
0 2019-06-10 32.160000 35.099998 31.780001 32.020000 32.020000 1961500
1 2019-06-11 31.379999 32.820000 28.910000 29.309999 29.309999 907900