python - 我将文件名添加到数据框中,但它只添加了相同的名称
问题描述
我有很多 csv 文件要打开,我需要添加一个带有这些文件名称的额外列。例如,我有 x.csv、y.csv、z.csv 等。在 csv 文件中,它如下所示:
X Z
1 3
4 5
4 6
它应该看起来像这样
X Z name
1 3 x
4 5 x
4 6 x
4 5 y
4 5 y
1 2 y
我的代码在下面,但它只返回 1 个值...
import pandas as pd
import os
import rglob
file_list = rglob.rglob("path", "*")
li = []
for path in file_list:
df = pd.read_csv(path, index_col=None, header=0,)
file_name = os.listdir('path')[0]
df["file_name"] = file_name
li.append(df)
知道我该如何解决吗?
最好的祝福
解决方案
你os.listdir
错了。os.listdir
返回目录中的文件列表。您应该使用os.basename
或pathlib.Path.name
使用路径库:
import pandas as pd
from pathlib import Path
file_list = Path("path").rglob("*.csv")
li = []
for path in file_list:
df = pd.read_csv(path, index_col=None, header=0,)
df["file_name"] = path.name
li.append(df)
推荐阅读
- php - Yii2全日历事件过滤不起作用
- r - 在 R Shiny 中订购交互式数据表的正确方法
- java - 尝试使用 minimax 制作无与伦比的井字游戏
- php - WordPress子主题不覆盖更改
- javascript - 对 Express 服务器的 AJAX 请求不发送任何内容
- javascript - jsdoc - 如何使用 Express.js 请求和响应作为参数类型
- ruby-on-rails - ActiveAdmin/Carrierwave 多图上传展示
- requirejs - 将 RequireJS 与 Graal 一起使用
- php - NGINX 无法处理错误请求
- neo4j - Neo4jclient:数据更改时接收事件