我在每个文件夹中都有多个文件夹和多个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