对于循环不适用于 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的主要内容,如果未能解决你的问题,请参考以下文章
Ienumerable concat不适用于每个循环[重复]