python - 从文件名更改日期格式并加入多个 csv 文件中的每小时数据
问题描述
我有多个 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']
解决方案
如果你的日期的第一行是2008-11-19 10:43:00
你的预期2019-11-08 10:43:00
,那么它显然错误地吃了额外的一行作为标题,所以尝试调整:
pd.read_csv(..., header=[0])`
让它不吃第一排/第二排。
请注意,这是列表[0]
而不是数字0
。
推荐阅读
- ms-access - 帮助列出来自许多 (~100) ms 访问数据库的查询名称
- python - 更新 MongoDB 中的整个集合
- node.js - 使用 cypress.io 在 chrome 中测试节点应用程序
- reactjs - Typing antd form.create when component uses a generic type
- javascript - Youtube Js Api - seekTo(time) 需要很长时间才能更新 player.getCurrentTime()
- python - python中的md5十六进制到二进制
- c# - 使树视图工作的代码中缺少什么?
- python - Pyinstaller tkinter 警报应用程序和应用程序内的路径
- python - Keras CNN 准确率高但预测不佳。如何改进它
- google-sheets - 如何以条件格式引用行的最左侧单元格?