2017-09-30 1749 views

回答

1

转换为Timedeltadt.total_seconds提取总秒数:

data = \ 
{'date': {0: pd.Timestamp('2013-01-01 00:00:00'), 
      1: pd.Timestamp('2013-01-02 00:00:00'), 
      2: pd.Timestamp('2013-01-03 00:00:00'), 
      3: pd.Timestamp('2013-01-04 00:00:00'), 
      4: pd.Timestamp('2013-01-05 00:00:00'), 
      5: pd.Timestamp('2013-01-06 00:00:00'), 
      6: pd.Timestamp('2013-01-07 00:00:00'), 
      7: pd.Timestamp('2013-01-08 00:00:00'), 
      8: pd.Timestamp('2013-01-09 00:00:00'), 
      9: pd.Timestamp('2013-01-10 00:00:00')}} 

df = pd.DataFrame.from_dict(data) 
df 

     date 
0 2013-01-01 
1 2013-01-02 
2 2013-01-03 
3 2013-01-04 
4 2013-01-05 
5 2013-01-06 
6 2013-01-07 
7 2013-01-08 
8 2013-01-09 
9 2013-01-10 

pd.to_timedelta(df.date).dt.total_seconds() 

0 1.356998e+09 
1 1.357085e+09 
2 1.357171e+09 
3 1.357258e+09 
4 1.357344e+09 
5 1.357430e+09 
6 1.357517e+09 
7 1.357603e+09 
8 1.357690e+09 
9 1.357776e+09 
Name: date, dtype: float64 

或者,也许,数据会更有用,如int类型:

pd.to_timedelta(df.date).dt.total_seconds().astype(int) 

0 1356998400 
1 1357084800 
2 1357171200 
3 1357257600 
4 1357344000 
5 1357430400 
6 1357516800 
7 1357603200 
8 1357689600 
9 1357776000 
Name: date, dtype: int64 
+0

尝试df.date.values.astype(float)一次 – Dark

+0

@Bharathshetty'不能从类似datetimelike [datetime64 [ns]]到[float64]' –

+0

它为我工作。 – Dark

2

使用astype浮动也就是说,如果你有一个像

df = pd.DataFrame({'date': ['1998-03-01 00:00:01', '2001-04-01 00:00:01','1998-06-01 00:00:01','2001-08-01 00:00:01','2001-05-03 00:00:01','1994-03-01 00:00:01'] }) 
df['date'] = pd.to_datetime(df['date']) 
df['x'] = list('abcdef') 
df = df.set_index('date') 

一个数据帧然后

df.index.values.astype(float) 

array([ 8.88710401e+17, 9.86083201e+17, 8.96659201e+17, 
    9.96624001e+17, 9.88848001e+17, 7.62480001e+17]) 

pd.to_datetime(df.index.values.astype(float)) 

DatetimeIndex(['1998-03-01 00:00:01', '2001-04-01 00:00:01', 
      '1998-06-01 00:00:01', '2001-08-01 00:00:01', 
      '2001-05-03 00:00:01', '1994-03-01 00:00:01'], 
      dtype='datetime64[ns]', freq=None) 
+0

请注意自2017年以来的秒数为10e9,因此10e17不正确。请参阅https://stackoverflow.com/a/46502880/4909087并运行https://stackoverflow.com/questions/4548684/how-to-get-the-seconds-since-epoch-from-the-time-date- gmtime-in-py的输出 –

+0

但是,当您将其转换回pd.to_datetime时,返回原始日期na – Dark

+0

是的,但是我认为OP想要使用历元时间。我不知道astype给出了什么,但它看起来像一个错误?这绝对不是时代。 –