当前位置: 首页 > 知识库问答 >
问题:

遍历文件并通过函数传递每个文件

翟缪文
2023-03-14

我正在尝试构建一个预算计算器来练习python。目前,我正在尝试迭代目录中的文件,然后将每个文件通过一个函数传递,以将我需要的数据提取到DataFrame(准备让它对其执行计算)。

我已经设法创建了清理数据的函数,以及迭代文件的for循环。但是,我不知道如何为每次迭代附加DataFrame。

#Where to look
os.chdir(r"C:\relevant\directory")
cwd = os.getcwd()

#key variables
main_df = pd.DataFrame()
pay_slip = {}
master_df = pd.DataFrame()

#Iterate over files
for file in os.listdir():
    slip_content = read_pdf(file)
    pay_slip[file] = slip_content

#Data clean up function
def get_key_info(pay_slip):
    read_dictionary = pay_slip.get(file)
    salary_str = read_dictionary["Employee"].iloc[2]
    pay_after_tax_str = read_dictionary["Tax Period"].iloc[14]
    date_format = read_dictionary["Pay Date"].iloc[0]
    salary = int(float(salary_str[1:].replace(",", "")))
    pay = int(float(pay_after_tax_str[1:].replace(",", "")))
    deductions = (salary - pay)
    df = pd.DataFrame([
        [date_format, salary, pay, deductions]
        ],
        columns=["Payment date", "Salary before tax", "take home pay", "total deductions"])
    return df

print(get_key_info(pay_slip))

当我运行此代码时,只有一个文件被添加到DataFrame,而不是所有文件。

提前感谢您的任何帮助

共有2个答案

锺离飞鸣
2023-03-14

谢谢你的帮助,弗洛里安,我已经按照你说的在我的目录上修复了这个循环。

然而,我无法遍历字典,因为它是不可散列的。

我将在下面发布我的代码,以防其他人遇到与我相同的问题。

    #Where to look
os.chdir(r"C:\relevant\directory")
cwd = os.getcwd()

#key variables
master_df = pd.DataFrame()


#Data clean up function
def get_key_info(x):
    salary_str = get_data["Employee"].iloc[2]
    pay_after_tax_str = get_data["Tax Period"].iloc[14]
    date_format = get_data["Pay Date"].iloc[0]
    salary = int(float(salary_str[1:].replace(",", "")))
    pay = int(float(pay_after_tax_str[1:].replace(",", "")))
    deductions = (salary - pay)
    df = pd.DataFrame([
        [date_format, salary, pay, deductions]
        ],
        columns=["Payment date", "Salary before tax", "take home pay", "total deductions"])
    return df

#Iterate over files
for f in os.listdir():
    get_data = read_pdf(f)
    master_df = master_df.append(get_key_info(f), ignore_index = True)

print(master_df)

这里我设置了变量< code>get_data来改变for循环的每次迭代,然后< code >。append() < code > master _ df

锺离烈
2023-03-14

您不会循环使用pay_slip字典。


for file in os.listdir(): 
    slip_content = read_pdf(file) 
    pay_slip[file] = slip_content 

#Data clean up function
def get_key_info(pay_slip): 
    read_dictionary = pay_slip.get(file) #<= where is file variable assign?

 类似资料:
  • 本文向大家介绍Python实现递归遍历文件夹并删除文件,包括了Python实现递归遍历文件夹并删除文件的使用技巧和注意事项,需要的朋友参考一下 思路: 遍历文件夹下面的文件夹 如果文件夹名称等于".svn",则修改文件夹的属性(因为".svn"的文件都是只读的,你不能直接删除) 删除此文件夹 如果文件夹名称不等于".svn",则递归上面的方法 Python的实现 代码 要点: Walk在os模块下

  • 问题内容: 在Python中,如何读取二进制文件并在该文件的每个字节上循环? 问题答案: Python 2.4及更早版本 Python 2.5-2.7 请注意,with语句在2.5以下的Python版本中不可用。要在v 2.5中使用它,你需要导入它: 在2.6中是不需要的。 Python 3 在Python 3中,这有点不同。我们将不再以字节模式而是字节对象从流中获取原始字符,因此我们需要更改条件

  • 我想使用phonegap的文件API(实际上是w3c文件API)遍历SD卡中所有目录和子目录中的每个文件。我必须通过查看这些文件的性质来对它们执行一组特定的操作。我不想搜索特定类型的文件,而是以顺序的方式遍历每个文件。 有人能帮我一下吗?只要有一个基本的循环框架和遍历的必要要求就会有很大的帮助。 提前谢谢你。

  • 我的数组正在加载,并且正在按计划(按照它们在文件中出现的顺序)将卡打印出来。当我尝试在单独的方法中循环遍历arraylist以检查数据是否存在时,它只打印最后一个对象而不是每个对象。有人能告诉我为什么吗? 加载法 和getAll()方法 运行时,它只打印出.txt文件中的最后一张牌“KS”(黑桃之王)。有人能告诉我为什么会这样吗? 谢谢 }

  • 问题内容: 我正在尝试捕获audiorecorder(https://github.com/cwilso/AudioRecorder)并通过Ajax向Blob发送一个php文件,该文件将接收Blob内容并创建文件(在这种情况下为wave文件)。 Ajax呼叫: 和我的php文件(vocal_render.php): PS:我是blob和ajax的新手。提前致谢。 问题答案: 尝试将文件上传为表单数

  • 问题内容: 我试图在PowerShell中遍历以下JSON文件。 如果没有专门命名顶部标签(例如17443和17444),由于我事先不知道它们的名称,就无法找到遍历数据的方法。 我想为所有记录输出标签3、4和5(标题,名字,姓氏)。 我该怎么做? 我可以使用下面的代码访问数据,但我想避免放入17443、17444等。 问题答案: 在PowerShell 3.0及更高版本中(请参阅:确定已安装的Po