将CSV列分为两部分

时间:2018-10-09 02:29:15

标签: python pandas datetime matplotlib

csv文件中的第2列如下所示:

20150926T104044Z
20150926T104131Z

,依此类推。

我创建了一个定义,可以将列出的日期更改为朱利安日期,但是想知道如何才能更改此特定数据列吗?

有没有办法让python将csv中的日期更改为与julian日期等效的日期?我可以将列拆分为两个csv并从那里转换朱利安日期吗?

2 个答案:

答案 0 :(得分:0)

您可能想得太多。试试这个。

cdf=pd.DataFrame(df['list'].tolist(),index=df.index)
mask=(cdf.isin(df.ss).any(1))&(cdf.isin(df.dd).any(1))
df[~mask]
Out[589]: 
  ss dd       list
0  A  B  [B, E, F]
2  A  C  [A, D, E]

答案 1 :(得分:0)

我观察到Julian Day有多种解释,一种是原始日期(一年中的某天),另一种是从公元前4713年1月1日星期一开始的一天。

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直接完成此操作,而无需加载到数据帧中。

这里有类似的问题Extract day of year and Julian day from a string date in python