我需要将许多(数百个)CSV拉入pandas数据帧。我需要在读入每个CSV文件的pandas数据帧时,在列中添加创建文件的日期。我可以使用此调用获取CSV文件的创建日期:
time.strftime('%m/%d/%Y', time.gmtime(os.path.getmtime('/path/file.csv')))
作为一个fyi,这是我用来读取CSV的命令:
path1 = r'/path/'
all_files_standings = glob.glob(path1 + '/*.csv')
standings = pd.concat((pd.read_csv(f, low_memory=False, usecols=[7, 8, 9]) for f in standings))
我尝试运行此调用(有效):
dt_gm = [time.strftime('%m/%d/%Y', time.gmtime(os.path.getmtime('/path/file.csv')))]
然后我尝试扩展它:
dt_gm = [time.strftime('%m/%d/%Y', time.gmtime(os.path.getmtime(f) for f in all_files_standings))]
我收到此错误:
TypeError:需要一个整数(获取类型生成器)
我该如何解决这个问题?
答案 0 :(得分:0)
如果不同的文件具有相同的列,并且您希望将不同的文件追加到行中。
import pandas as pd
import time
import os
# lis of files you want to read
files = ['one.csv', 'two.csv']
column_names = ['c_1', 'c_2', 'c_3']
all_dataframes = []
for file_name in files:
df_temp = pd.read_csv(file_name, delimiter=',', header=None)
df_temp.columns = column_names
df_temp['creation_time'] = time.strftime('%m/%d/%Y', time.gmtime(os.path.getmtime(file_name)))
df_temp['file_name'] = file_name
all_dataframes.append(df_temp)
df = pd.concat(all_dataframes, axis=0, ignore_index=True)
df
输出:
如果要按列附加不同的文件:
all_dataframes = []
for idx, file_name in enumerate(files):
df_temp = pd.read_csv(file_name, delimiter=',', header=None)
column_prefix = 'f_' + str(idx) + '_'
df_temp.columns = [column_prefix + c for c in column_names]
df_temp[column_prefix + 'creation_time'] = time.strftime('%m/%d/%Y', time.gmtime(os.path.getmtime(file_name)))
all_dataframes.append(df_temp)
pd.concat(all_dataframes, axis=1)
输出: