【问题标题】:Python for loop only recognizing first line of the blockPython for 循环仅识别块的第一行
【发布时间】:2019-05-09 10:50:13
【问题描述】:

我是 Python 新手。我在 Anaconda Spyder IDE 中使用 python 3 进行简单的机器学习项目。 我尝试输入一个 csv 文件名并使用 for 循环将它们一一添加到熊猫数据框中:

for i in range (var):
    name = input ('CSV file name: ')
    data = pd.read_csv (name)
    stocks = pd.DataFrame ({name: data ['Column name']})

问题是,for 循环只对第一行有效。它一个接一个地输入文件名“var”次,然后只读取最后一个文件。 为什么 for 循环会这样工作?我错过了什么?

【问题讨论】:

  • 欢迎来到 SO!您每次通过循环都会覆盖变量。此外,在括号前加空格不是好的 Python 风格(在我所知道的任何语言中,这都不是好的风格,想想吧)。

标签: python pandas for-loop anaconda spyder


【解决方案1】:

您正在循环的每次迭代中创建一个新的数据框。相反,Pandas 方法as recommended in the docs 是从可迭代的系列中构造数据框:

d = {}
for i in range(var):
    name = input('CSV file name: ')
    data = pd.read_csv(name)
    d[name] = data['Column name']

stocks = pd.concat(d.values(), axis=1, keys=d)

【讨论】:

    猜你喜欢
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    相关资源
    最近更新 更多