在 csv 文件中添加列,其中列值作为其所在'folder'的名称



我在每个文件夹中都有多个文件夹和多个csv文件。我想在每个csv文件中添加一列,其中包含文件夹的名称,即时间戳

例如:20211307

--abc.csv--def.csv

20211306

--abc.csv--def.csv

20211305

--abc.csv--def.csv

通过遍历文件夹和文件,可以使用os.path编写任何内容吗

如果您喜欢使用pathlib而不是os.path,并且如果您喜欢将每个文件处理为pandas DataFrame,则可以使用

  • 遍历.csv文件的glob((
  • 将每个文件读取到DataFrame中
  • 插入具有文件父级名称的列
  • 使用修订后的DataFrame覆盖文件。这可能在第一次运行时不正确,所以您希望在运行前备份文件!更好的方法可能是使用新的文件名进行编写,一旦你对结果感到满意,你就可以回来整理原始文件,并在必要时重命名新文件。在下面的示例代码中,为了安全起见,我注释掉了将覆盖文件的关键行。即便如此,还是建议采取额外的安全措施,以确保只修改预期的文件,正如@timus所指出的那样

import pandas as pd    
from pathlib import Path
p = Path('.')
for fname in p.glob('**/*.csv'):
print(fname.as_posix())
parent = fname.parent.name
df = pd.read_csv(fname)
df.insert(0, 'parent', parent)
print(df)
## df.to_csv(fname, index=False)

输出是这样的:

123/f2.csv
parent  a
0    123  1
1    123  2
123/f1.csv
parent  a
0    123  1
1    123  2
124/f2.csv
parent  a
0    124  1
1    124  2
124/f1.csv
parent  a
0    124  1
1    124  2

相关内容

  • 没有找到相关文章

最新更新