![](/img/trans.png)
[英]How do you call a function defined in the current function by its name (a string)
[英]How do you call a file name defined as list by each name?
您如何调用每个名称定义为列表的文件名?
*首先,您默认导入 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 文件?
我很难理解你的问题。 我想你在问如何 append '.csv' 到列表的元素。 那是对的吗?
如果是这样,那么您可以使用map()
function 来实现它:
z = list(map(lambda ip:(ip+'.csv'),tgrt_csv)
然后您可以使用pd.read_csv()
方法加载内容。
我已经更改了您的 function 以获取名称,因为我不确定它是否有效,拼图的某些部分丢失了:-)。 但我保持了一些特征,比如要求文件扩展名。 为了使用 os.listdir 我们导入 os 模块。
import os
我已将我的路径定义为 python 工作目录中的文件夹,并在其中存储了 3 个 csv 文件。
path = 'somedir/'
这是您的新 function:
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
然后调用 function f_read_csv 并传递路径:
names = f_read_csv("somedir/")
output,如果您打印它:
['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
我经常使用list comprehension
来生成数据框。
dfs = [f_read_csv(name) for name in read_csv_list]
并使用pd.concat
连接它们
df = pd.concat(dfs)
等等,使用glob
生成文件列表
files = glob.glob("/path/to/target/files/*.csv")
do you meaning read a list of filename by pandas, and transfrom then to dataframe, if all csv file has same format, you can use dask.dataframe
import dask.dataframe as dd
ddf = dd.read_csv(f"{get_csv_path}*.csv")
df = ddf.compute()
dask 与 pandas 不兼容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.