如何解决在 csv 文件中添加一列,将列值作为它所在的“文件夹”的名称
我在每个文件夹中有多个文件夹和多个 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。