Разделение столбца CSV на два - PullRequest
0 голосов
/ 09 октября 2018

Столбец 2 в моем CSV-файле выглядит следующим образом:

20150926T104044Z
20150926T104131Z

и так далее.

У меня есть определение, которое изменит указанную дату на юлианскую, но мне было интересно, как я могу изменить этот конкретный столбец данных?

Есть ли способ заставить python изменить даты в csv на их юлианский эквивалент даты?Могу ли я разбить столбец на два csv и перевести оттуда юлианскую дату?

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Я заметил, что существует множество толкований юлианского дня , одна из них - дата начала (день года), а другая - понедельник, 1 января, 4713 г. до н.э.

import pandas as pd
import datetime
import jdcal

df = pd.read_csv("path/to/your/csv")


def tojulianDate(date):
    return datetime.datetime.strptime(date, '%Y%m%dT%H%M%SZ').strftime('%y%j')
def tojulianDate2(date):
    curr_date = datetime.datetime.strptime(date, '%Y%m%dT%H%M%SZ')
    curr_date_tuple = curr_date.timetuple()
    return int(sum(jdcal.gcal2jd(curr_date_tuple.tm_year, curr_date_tuple.tm_mon, curr_date_tuple.tm_mday)))
df['Calendar_Dates'] = df['Calendar_Dates'].apply(tojulianDate2)

df.to_csv('path/to/modified/csv')

Метод «toJulianDate» может использоваться для получения дня года или даты выхода в эфир.для второго формата есть библиотека с именем jdcal для преобразования григорианской даты в юлианский день или наоборот, что делается в toJulianDate2.Это также можно сделать напрямую, открыв csv и не загружая в фрейм данных.

На этот же вопрос был дан ответ Извлечение дня года и юлианского дня из строковой даты в python

0 голосов
/ 09 октября 2018

Вы, возможно, думаете об этом.Попробуйте это.

from dateutil.parser import parse
import csv

def get_julian(_date):
    # _date is holding 20150926T104044Z
    the_date = parse(_date)
    julian_start = parse('19000101T000000Z')
    julian_days = (the_date - julian_start).days
    return julian_days

with open('filename.csv') as f:
    csv_reader = csv.reader(f)
    for row in csv_reader:
        # Column 2, right?
        row[1] = get_julian(row[1])

        # Do things and stuff with your corrected data.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...