【发布时间】:2020-11-07 18:50:55
【问题描述】:
我有多个名称表示日期的 csv 文件
"cd191108.csv", "cd191120.csv"
而 csv 文件包含这样的数据:
GMT + TZ;Value
10:43:00;10
10:45:00;20
...
我想要做的是将所有 csv 文件合并到 pandas 中的一个数据框中,但“时间”列指示文件名中的日期和文件内容中的小时,例如
Time;value
2019-11-08 10:43:00;10
我通过以下方式完成了它:
import os
import pandas as pd
path = os.getcwd()
files = os.listdir(path)
files_csvf = [f for f in files if f[-3:] == 'csv']
files_csv
dfs=[]
for f in files_csv:
data = pd.read_csv(f,sep=";",index_col=False)
data['datetime']=pd.to_datetime(f[2:8])+pd.to_timedelta(data['GMT + TZ'])
data=data.drop('GMT + TZ',axis=1)
dfs.append(data)
df=pd.concat(dfs,ignore_index=True)
df
(参考How to add a date from filename to a time column to make datetime column? Python Pandas)
但是,“时间”列的结果如下:
2008-11-19 10:43:00
而不是我的预期
2019-11-08 10:43:00
我尝试使用“to_datetime”进行更正,但它不起作用..
df['Time'] = pd.to_datetime(df['Time']
【问题讨论】:
-
通过
yearfirst=True) sodf['Time'] = pd.to_datetime(df['Time'], yearfirst=True)` -
谢谢,大卫!我也意识到 df['Time'] = pd.to_datetime(df['Time'], format='%y%m%d') 也可以!很高兴解决我的第一份工作;)