【问题标题】:For Loop Not Working With pandas.read_csv对于循环不适用于 pandas.read_csv
【发布时间】:2020-12-05 12:24:05
【问题描述】:

我正在使用 pandas 读取一些 csv 文件并遇到错误。

我有我想要阅读的文件列表:

files = ['file1.csv', 'file2.csv', 'file3.csv']

当我这样做时:

import pandas as pd
pd.read_csv('file1.csv').head()
pd.read_csv('file2.csv').head()
pd.read_csv('file3.csv').head()

一切正常。然而,这显然不是我想要做的。我在想这会起作用:

import pandas as pd
for file in files:
   pd.read_csv(file).head()

但是当我运行这段代码时,我什么也得不到。

我确信这不是我的文件列表或类似内容的错误,因为当我这样做时: 将熊猫导入为 pd 对于范围内的 i (2): pd.read_csv('file1.csv').head()

我什么也没得到,而不是预期的 file1.csv 的前 5 行两次。

为什么会这样?

注意:我使用的是 Jupyter notebook,所以我不需要打印头部或类似的东西,当我这样做时它会自动出现pd.read_csv('file1.csv').head()

【问题讨论】:

  • 您应该在浏览文件列表时使用print() 显示结果,或者将它们保存在变量(列表)中并稍后显示。函数调用结果仅在交互模式下自动显示。

标签: python pandas csv for-loop


【解决方案1】:

我相信您的代码一切正常。 在 Jupyter notebook 中,它并不总是自动打印结果。

如果要查看 Jupyter notebook 打印结果的方式,请查看以下代码:

x = [1,2]
x

这将显示结果 [1,2]

len(x)

这将显示 2

for i in range(3):
    len(x)

另一方面,这不会显示任何内容。

请考虑将结果保存在 for 循环中,或者每次在 for 循环中打印。

【讨论】:

    【解决方案2】:

    试试下面的代码,我强烈建议你输入文件的整个文件路径而不是只提到文件名

    import pandas as pd
    
    files = ['file1.csv', 'file2.csv', 'file3.csv']
    
    for file in files:
       temp = pd.read_csv(file)
       print(temp.head())
    

    【讨论】:

      【解决方案3】:

      我认为你想要的是这样的:

      res = []
      for file in files:
          df = pd.read_csv(file)
          # print(df.head())   if you insist.
          res.append(df)
      

      现在您可以对 res 中的数据框列表做任何您想做的事情。让我们将它们连接起来:

      df = pd.concat(res)
      

      或者也许你只需要看到这一切都有效:

      import pandas as pd
      for file in files:
          print(pd.read_csv(file).head())
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-13
        • 2014-01-29
        • 2017-01-26
        • 2014-09-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多