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

使用Pandas递归编辑CSV到子目录

胡永逸
2023-03-14
/Invoice List/
              Invoice1folder/
                             ..._Invoice.csv
              Invoice2folder/ 
                             ..._Invoice.csv
              Invoice5folder/
                             ..._Invoice.csv
              Invoice9folder/
                             _Invoice.csv
"_Invoice.csv"       "_Invoice_Reduced.csv"
 A B C D        =>              A C
 1 2 3 4        =>              1 3 
import pandas as pd
import os

columns_to_keep = ['A','C']
final_form= pd.DataFrame()

for file in os.listdir():
    if file.endswith('*_Invoice.csv'):
        df = pd.read_csv(file)
        df = df.loc[;columns_to_keep]
        df = df.to_csv(f'{file.name}_Invoice_Reduced.csv')
   if file.endswith('*_Invoice_Reduced.csv'):
        df = pd.read_csv(file)
        final_form= final_form.append(df, ignore_index=True)

有什么想法吗?

共有1个答案

龙学
2023-03-14

这就可以完成任务了。

而不是打开,移除列,保存并继续移动;我选择只打开缩减的列,保存这个缩减的数据表,然后追加到df。这将导致所有缩减的文件都堆叠在这个数据目录中。

使用path=“.”从当前目录

from pathlib import Path
import pandas as pd


df = pd.DataFrame()
columns_to_keep = ['A','C']
path = "."
pattern = "*_Invoice.csv"

for file in Path(path).rglob(pattern):
    output_file = "{}/{}{}".format(file.parent, file.stem, "_Reduced.csv")
    _df = pd.read_csv(file, usecols=columns_to_keep)
    _df.to_csv(output_file, sep=",", index=False, header=True)
    df = pd.concat([df, _df])
 类似资料:
  • 问题内容: 如何使用pathlib递归遍历给定目录的所有子目录? 似乎只迭代给定目录的直接子级。 我知道这可以通过或使用,但是我想使用pathlib,因为我喜欢使用path对象。 问题答案: 您可以使用对象的方法:

  • 问题内容: 我想通过SSH递归下载目录,目录内容未知,并且一直在尝试Paramiko。我已经看到了几个如何上传目录的示例,但没有一个涉及递归下载。 我可以列出目录中的所有项目,但无法找到一种方法来知道该项目是文件(下载)还是目录(递归调用)。 那么我怎么知道一个项目是文件还是目录? 问题答案: …假设是开放的Paramiko SFTP连接。

  • 我必须从来自excel的输入数据做第一级标准化。【输入Excel】【1】。 现在输出应类似于[输出文件][2]。我曾尝试将MEL(将方法定义为全局配置)与Dataweave结合使用。在dataweave内部,我尝试调用上面定义的方法作为全局配置。由于生成的文件为空,因此此方法不起作用。有人能提出一个更好的方法或这个方法中的问题吗。下面是代码@Manik:

  • 本文向大家介绍Regular Expressions 递归到子模式,包括了Regular Expressions 递归到子模式的使用技巧和注意事项,需要的朋友参考一下 示例 您可以使用以下构造(取决于风味)将其递归到子模式中,假设n是捕获组号和捕获组name的名称。 (?n) \g<n> \g'0' (?&name) \g<name> \g'name' (?P>name) 以下模式: 将匹配以下文

  • 如果我有一个像这样的gradle多项目 每个项目都有一个任务'foo',我可以在root项目上调用它 它还可以为子项目执行 但如果我从子项目调用task“:foo” 仅执行根项目上的任务 但不是子项目上的“foo”任务。 在子项目中,是否有方法对所有项目调用“foo”?我这样问是因为我使用的是gradle eclipse插件,在那里我只能访问子项目,即我在eclipse中看到的项目。 顺便说一句:

  • 我试图阶段一个项目从工作目录到服务器(同一台机器)。使用以下代码: 我希望看到所有的文件都被复制。但是,它使目录结构扁平化-所有目录都被复制,但每个文件都放在根目录中 Gulp看起来是一个很好的构建工具,但是复制项目应该是一个简单的过程吗?