首页 > 解决方案 > 未知数量的用户输入。输入为 .xlsx 文件

问题描述

我正在尝试创建一个对 .xlsx 文件进行一些分析的简单代码。这些文件被转换为 pandas 数据帧,然后被修改和绘制。我遇到的问题是我不知道每次运行程序时会有多少感兴趣的文件。

import pandas as pd
import matplotlib.pyplot as plt

#Prompt user to enter in Files
data=list()
while true:
    file=input('Enter .xlsx File Name/nType 'Done' When Complete')
    if file == 'Done': break
    else:
        data.append(pd.read_excel(file))


#Crunch Data 
def somefun(data[i],..):
    return list a
def anotherfunc(data[i],..):
    return list b

#plot Data....

在这里,我将每个文件转换为数据框,然后将其附加到列表中。我想我可以这样进行,但它可能不是“pythonic”。我最近才开始使用面向对象编程。听起来我可以通过定义自己的类从每个用户界面创建对象的实例。我在思考如何构建课程以及这是否比它值得做的更多工作时遇到了麻烦。

非常感激,

标签: pythonpandas

解决方案


这是我用来遍历文件夹中某种类型的所有文件的脚本。我将每个文件读入数据框,然后将数据框存储在字典中。最后,您可以将所有数据帧连接成一个数据帧。

import pandas as pd
import os

path = r'C:\Users\user\Documents\project'

allfiles=os.listdir(path)
xlsx_list=[filename for filename in allfiles if filename[-5:] in [".xlsx"]]

ds = {}

for file in xlsx_list:
    ds[file] = pd.read_excel(path+'\\'+file)

df = pd.concat(ds)

推荐阅读