Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我将文件名添加到dataframe中,但它只添加相同的名称_Python_Pandas_Csv_For Loop_Glob - Fatal编程技术网

Python 我将文件名添加到dataframe中,但它只添加相同的名称

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

我有很多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:

将熊猫作为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@Tmiskiewicz
os.listdir(…)[0]
返回遇到的第一个文件或目录。它不返回文件名。因此,如果
文件列表中的每个目录都具有相同的结构,则可能会导致所描述的行为