获取文件创建日期 - 添加到read_csv上的dataframes列

时间:2017-03-04 03:18:50

标签: python csv pandas operating-system

我需要将许多(数百个)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:需要一个整数(获取类型生成器)

我该如何解决这个问题?

1 个答案:

答案 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

输出:

enter image description here

如果要按列附加不同的文件:

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)

输出:

enter image description here