我开始提取文件夹中的所有文件,并将它们连接在一起,下面这个方法有效:
warranty_list = []
warranty_files = glob.glob(os.path.join(qms, '*.csv'))
for file_ in warranty_files:
df = pd.read_csv(file_,index_col=None, header=0)
warranty_list.append(df)
warranty = pd.concat(warranty_list)然后我不得不写一个函数,这样我就只能抓取某些文件并将它们连接在一起,但这个函数不起作用。我没有得到一个错误,但是最后一行没有被使用,所以我没有连接文件。
def get_warranty(years=5):
warranty_list = [] #list for glob.glob()
current_year = datetime.datetime.today().year #current year
last_n_years = [str(current_year-i) for i in range(0,years+1)]
for year in last_n_years:
warranty = glob.glob(os.path.join(qms, "Warranty Detail%s.csv" % year))
if warranty:
for file_ in warranty:
df = pd.read_csv(file_,index_col=None, header=0)
warranty_list.append(df)
warranty_df = pd.concat(warranty_list)最后一行不起作用可能是因为pd.concat()获得了一个列表作为输入,而它不会对此做任何事情。我不明白为什么它能在第一组代码中工作,而不是这一组。
我不知道如何更改函数以获得数据帧,也不知道如何将末尾获得的内容更改为数据帧。
有什么建议吗?
发布于 2018-01-20 04:33:10
我建议直接使用append,因为它和concat做同样的事情
所以基本上你从一个空的数据帧开始
warranty_df = pd.Dataframe()然后在读取文件时将其他数据帧附加到该文件
因此,您的函数应该保持不变,但需要删除以下行
warranty_df = pd.concat(warranty_list)在循环之后,您将返回warranty_df!
def get_warranty(years=5):
warranty_df = pd.Dataframe()
current_year = datetime.datetime.today().year #current year
last_n_years = [str(current_year-i) for i in range(0,years+1)]
for year in last_n_years:
warranty = glob.glob(os.path.join(qms, "Warranty Detail%s.csv" % year))
if warranty:
for file_ in warranty:
df = pd.read_csv(file_,index_col=None, header=0)
waranty_df = warranty_df.append(df)
return warranty_dfhttps://stackoverflow.com/questions/48348745
复制相似问题