如何将日期从文件名添加到时间列以创建datetime列?蟒蛇熊猫

时间:2018-10-24 12:52:59

标签: python pandas date datetime

我有多个这样命名的文件
2018-08-31-logfile-device1 2018-09-01-logfile-device1

在这些文件中,数据按以下方式排序:
00:00:00.283672analogue values:[2511, 2383, 2461, 2472] 00:00:00.546165analogue values:[2501, 2395, 2467, 2465]

我使用以下代码将所有这些文件附加到一个大数据框中:(我从这里得到:Import multiple excel files into python pandas and concatenate them into one dataframe

file_log = os.listdir(path)
file_log = [file_log for file_log in glob.glob('*device1*')]
df = pd.DataFrame()
for file_log in file_log:
    data = pd.read_csv(file_log,sep='analogue values:',names=['time', 
'col'], engine='python')
    df = data.append(data1)

我转换数据,然后看起来像这样:
analog1 analog2 analog3 analog4 time 2511 2383 2461 2472 00:00:00.283672 2501 2395 2467 2465 00:00:00.546165 2501 2395 2467 2465 00:00:00.807846 2497 2381 2461 2467 00:00:01.070540 2485 2391 2458 2475 00:00:01.332163

但是问题是,我希望时间列为日期时间,其中日期是来自其来源文件名的日期。

analog1 analog2 analog3 analog4 datetime 2511 2383 2461 2472 2018-08-31 00:00:00.283672 2501 2395 2467 2465 2018-08-31 00:00:00.546165 2501 2395 2467 2465 2018-08-31 00:00:00.807846 2497 2381 2461 2467 2018-08-31 00:00:01.070540 2485 2391 2458 2475 2018-08-31 00:00:01.332163

1 个答案:

答案 0 :(得分:1)

您可以将file[:10]的文件名中的前10个值转换为日期时间,并添加到to_timedelta转换的time列中。

然后append个数据框列出并最后使用concat

dfs = []
for file in glob.glob('*device1*'):
    data = pd.read_csv(file,sep='analogue values:',names=['time','col'], engine='python')
    data['datetime'] = pd.to_datetime(file[:10]) + pd.to_timedelta(data['time'])
    data = data.drop('time', axis=1)
    dfs.append(data)

df = pd.concat(dfs, ignore_index=True)