【问题标题】:How can I loop through just a certain part of a csv file?如何循环遍历 csv 文件的某个部分?
【发布时间】:2019-11-20 11:38:48
【问题描述】:

我需要遍历我的 CSV 文件中的某些行,例如,第 231 行到第 252 行。然后我想将计算每一行得到的值相加,并将它们除以我遍历的行数.我该怎么做?

我是 pandas 的新手,因此非常感谢您对此的帮助。

我有一个来自 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

我已经完成了导入 pandas 和所有这些的基本步骤。然后我添加了两个对应于不同列的变量,以便轻松引用该列。

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
...

但我只希望在一定数量的行上进行此输出。

然后我想将所有这些值相加,然后除以我循环的行数。这部分很简单,因此您无需在答案中包含这一点,但如果您这样做也没关系。

【问题讨论】:

  • 欢迎来到 Stack Overflow!您可以使用.iloc,它使用整数索引而不是.loc使用的标签索引

标签: python pandas csv dataframe for-loop


【解决方案1】:

使用skiprows and nrows。根据Python Pandas read_csv skip rows but keep header 保留标题,方法是将范围传递给skiprows,以1 开头。

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

【讨论】:

  • 非常感谢。就像我想要的那样工作。
  • @DenFulaAnkungen 很高兴知道。如果答案解决了问题,请考虑accepting它。
【解决方案2】:

.loc 按标签切片。对于整数切片使用.iloc

dates = df.iloc[231:252]

【讨论】:

  • 非常感谢。但它仍然从 1-252 循环每一行,而不是从 231 开始。顺便说一下,使用 PyCharm,但据我所知,这不会影响任何事情。
猜你喜欢
  • 1970-01-01
  • 2019-07-21
  • 2014-04-10
  • 2019-12-13
  • 2019-04-11
  • 2016-08-29
  • 2016-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多