Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.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 如何调用由每个名称定义为列表的文件名?_Python_Pandas_Dataframe - Fatal编程技术网

Python 如何调用由每个名称定义为列表的文件名?

Python 如何调用由每个名称定义为列表的文件名?,python,pandas,dataframe,Python,Pandas,Dataframe,如何调用由每个名称定义为列表的文件名 *首先,默认导入csv文件的方法 def f_read_csv(tgrt_csv): trgt_csv_temp = '%s.csv' % (tgrt_csv) tgrt_tbl = pd.read_csv("".join([get_csv_path,trgt_csv_temp])) return tgrt_tbl *其次,使用for csv,我尝试输入列表中每个文件的名称 for name in read_csv_list:

如何调用由每个名称定义为列表的文件名

*首先,默认导入csv文件的方法

def f_read_csv(tgrt_csv):
    trgt_csv_temp = '%s.csv' % (tgrt_csv)
    tgrt_tbl = pd.read_csv("".join([get_csv_path,trgt_csv_temp]))
    return tgrt_tbl
*其次,使用for csv,我尝试输入列表中每个文件的名称

for name in read_csv_list:
    f_read_csv('%s' %name)

如何获取列表名称中的每个csv文件?

我无法理解您的问题。我想您是在问如何将“.csv”附加到列表的元素。对吗

如果是这样,则可以使用
map()
函数来实现:

z=list(映射(lambda ip:'ip+'.csv'),tgrt_csv)

然后,您可以使用
pd.read\u csv()
方法加载内容。

我已更改了您的函数,以获取名称,因为我不确定它是否有效,拼图的某些部分缺失:-)。 但是我保留了一些特性,比如请求文件扩展名。 为了使用os.listdir,我们导入os模块

import os
我将路径定义为python工作目录中的一个文件夹,并在其中存储了3个csv文件

path = 'somedir/'
以下是您的新功能:

def f_read_csv(tgrt_csv):

  tgrt_tbl = [] #to store file names

    for file in os.listdir(tgrt_csv): #access to the directory

      if file.endswith('.csv'): #checking files with .csv extension
        name_file = os.path.join(tgrt_csv, file)
        tgrt_tbl.append(name_file)

  return tgrt_tbl
然后调用函数f_read_csv并传递路径:

names = f_read_csv("somedir/")  
输出(如果打印):

['somedir/file 1.csv', 'somedir/file 2.csv', 'somedir/file 3.csv']
如果要将它们作为字符串,可以从列表中取出:

for name in names:
    print(name)


somedir/file 1.csv
somedir/file 2.csv
somedir/file 3.csv

我经常使用
列表理解
生成数据帧

dfs = [f_read_csv(name) for name in read_csv_list]
并使用
pd.concat
对其进行concat

df = pd.concat(dfs)
此外,使用
glob
生成文件列表

files = glob.glob("/path/to/target/files/*.csv")

你的意思是按pandas读取文件名列表,然后转换到dataframe吗?如果所有csv文件的格式都相同,你可以使用
dask.dataframe

import dask.dataframe as dd

ddf = dd.read_csv(f"{get_csv_path}*.csv")
df = ddf.compute()

dask与pandas不兼容。

您能否提供csv文件的示例,以便我们更好地回答您的问题?您需要使用pandas的具体原因是什么?