首页 > 解决方案 > 从长时间戳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 文件。一旦找到解决方案,我将在此处发布更新。

标签: pythonpandasdataframecsv

解决方案


您正在转换为 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)

推荐阅读