Python 我将文件名添加到dataframe中,但它只添加相同的名称
我有很多csv文件要打开,我需要添加一个带有这些文件名称的额外列。例如,我有x.csv、y.csv、z.csv等csv文件,它如下所示:Python 我将文件名添加到dataframe中,但它只添加相同的名称,python,pandas,csv,for-loop,glob,Python,Pandas,Csv,For Loop,Glob,我有很多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 = rg
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:
将熊猫作为pd导入
从pathlib导入路径
文件列表=路径(“路径”).rglob(“*.csv”)
li=[]
对于文件列表中的路径:
df=pd.read\u csv(路径,索引列=None,头=0,)
df[“文件名”]=path.name
li.追加(df)
I更新代码。没有必要使用“glob”。但是效果还是一样的file\u name=os.listdir('path')[0]
应该是file\u name=os.listdir(path)[0]
。如果path
是一个固定字符串,那么每次indeed都会得到相同的结果,但看起来不是这样:file\u name=os.listdir(C:\Users\tomasz.miskiewicz\Desktop\file)[0],并且在这个文件中是csvfiles@Tmiskiewiczos.listdir(…)[0]
返回遇到的第一个文件或目录。它不返回文件名。因此,如果文件列表中的每个目录都具有相同的结构,则可能会导致所描述的行为