Python 如何调用由每个名称定义为列表的文件名?
如何调用由每个名称定义为列表的文件名 *首先,默认导入csv文件的方法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:
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的具体原因是什么?