python - 从长时间戳csv文件python中获取天数
问题描述
我有一个带有长时间戳列(年)的 csv 文件:
1990-05-12 14:01
.
.
1999-01-10 10:00
时间采用 hh:mm 格式。我正在尝试将每天的数据提取到一个新的 csv 文件中。这是我的代码:
import datetime
import pandas as pd
df = pd.read_csv("/home/parallels/Desktop/ewh_log/hpwh_log.csv",parse_dates=True)
#change timestmap column format
def extract_months_data(df):
df = pd.to_datetime(df['timestamp'])
print(df)
def write_o_csv(df):
print('writing ..')
#todo
x1 = pd.to_datetime(df['timestamp'],format='%m-%d %H:%M').notnull().all()
if (x1)==True:
extract_months_data(df)
else:
x2 = pd.to_datetime(df['timestamp'])
x2 = x1.dt.strftime('%m-%d %H:%M')
write_to_csv(df)
问题是当我到达以下行时
def extract_months_data(df):
df = pd.to_datetime(df['timestamp'])
我收到以下错误:
pandas._libs.tslibs.np_datetime.OutOfBoundsDatetime
是否有替代解决方案可以在不忽略其余数据的情况下使用 pandas 进行操作。我看到了建议使用强制但用 NaT 替换其余数据的帖子。
谢谢
更新:
这里的这篇文章回答了一半的问题,即如何从时间戳列中过滤小时(或分钟)。第二部分是如何将一整天提取到另一个 csv 文件。一旦找到解决方案,我将在此处发布更新。
解决方案
您正在转换为 datetime 两次,这是不需要的
像这样的东西应该工作
import pandas as pd
df = pd.read_csv('data.csv')
df['month_data'] = pd.to_datetime(df['timestamp'], format='%Y-%m-%d %H:%M')
df['month_data'] = df['month_data'].dt.strftime('%m-%d %H:%M')
# If you dont want columns with month_data NaN
df = df[df['month_data'].notna()]
print(df)
推荐阅读
- diagrammer - 如何在 DiagrammeR 中插入希腊字符?
- python - 如何遍历字符串并将以某个字母开头的单词添加到空列表中?
- java - 在 java 准备好的语句中附加单引号
- python - 在尚未启动的池工作人员中捕获异常
- html - 导航器和标签
- javascript - ExpressJS 中的 app.use 函数如何重定向以“/”结尾的 url?
- python - FutureWarning: .loc 或 [] 缺少标签,建议使用 .reindex()
- jquery - 禁用带有验证 Jquery 的按钮
- mongodb - 使用 Jenkins Pipeline 内部的 MongoDB docker 镜像来测试代码
- node.js - 无法使用 lambda 集成获取代理参数