对于循环不适用于 pandas.read_csv

Posted

技术标签:

【中文标题】对于循环不适用于 pandas.read_csv【英文标题】:For Loop Not Working With 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() 显示结果,或者将它们保存在变量(列表)中并稍后显示。函数调用结果仅在交互模式下自动显示。 【参考方案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())

【讨论】:

以上是关于对于循环不适用于 pandas.read_csv的主要内容,如果未能解决你的问题,请参考以下文章

Cuda内核中的大型for循环不适用于大型数组[关闭]

For循环不适用于innerHTML

React 道具不适用于 for 循环

Ienumerable concat不适用于每个循环[重复]

为啥 If 语句不适用于 selenium 中的 for 循环

Jquery“点击”或“取消绑定”不适用于php循环