首頁>Program>source

我在pandas中有一个名為``munged_data''的資料框,其中有两列``entry_date''和``dob'',我已使用pd.to_timestamp將其轉換為時間戳,我試圖弄清楚如何根据時間来計算人们的年龄 " entry_date"和" dob"之間的區別,為此,我需要获取两列之間的天數差異(這樣我才能像迴合一樣做某事(days / 365.25)。我似乎無法找到 一種使用矢量化操作来執行此操作的方法。当我執行munged_data.entry_date-munged_data.dob時,我得到以下資訊:

internal_quote_id
2                    15685977 days, 23:54:30.457856
3                    11651985 days, 23:49:15.359744
4                     9491988 days, 23:39:55.621376
7                     11907004 days, 0:10:30.196224
9                    15282164 days, 23:30:30.196224
15                  15282227 days, 23:50:40.261632 

但是,我似乎無法將日期提取為整數,因此我可以繼續进行計算。 谢谢您的帮助。

最新回復
  • 5月前
    1 #

    您需要0.11(0.11rc1已發佈,下週最终確认)

    In [9]: df = DataFrame([ Timestamp('20010101'), Timestamp('20040601') ])
    In [10]: df
    Out[10]: 
                        0
    0 2001-01-01 00:00:00
    1 2004-06-01 00:00:00
    In [11]: df = DataFrame([ Timestamp('20010101'), 
                              Timestamp('20040601') ],columns=['age'])
    In [12]: df
    Out[12]: 
                      age
    0 2001-01-01 00:00:00
    1 2004-06-01 00:00:00
    In [13]: df['today'] = Timestamp('20130419')
    In [14]: df['diff'] = df['today']-df['age']
    In [16]: df['years'] = df['diff'].apply(lambda x: float(x.item().days)/365)
    In [17]: df
    Out[17]: 
                      age               today                diff      years
    0 2001-01-01 00:00:00 2013-04-19 00:00:00 4491 days, 00:00:00  12.304110
    1 2004-06-01 00:00:00 2013-04-19 00:00:00 3244 days, 00:00:00   8.887671
    

    您最後需要這種奇怪的應用,因為尚未完全支援timedelta64 [ns]標量(例如,就像我们現在如何將timestamps用於datetime64 [ns]一樣,為0.12)

  • 5月前
    2 #

    使用 pandas式 Timedelta 从v0.15.0開始提供,您還可以:

    In[1]: import pandas as pd
    In[2]: df = pd.DataFrame([ pd.Timestamp('20150111'), 
                               pd.Timestamp('20150301') ], columns=['date'])
    In[3]: df['today'] = pd.Timestamp('20150315')
    In[4]: df
    Out[4]: 
            date      today
    0 2015-01-11 2015-03-15
    1 2015-03-01 2015-03-15
    In[5]: (df['today'] - df['date']).dt.days
    Out[5]: 
    0    63
    1    14
    dtype: int64
    

  • 5月前
    3 #

    不確定是否仍然需要它,但是在Pandas 0.14中,我通常使用.astype('timedelta64 [X]')方法 http://pandas.pydata.org/pandas-docs/stable/timeseries.html(频率轉換)

    df = pd.DataFrame([ pd.Timestamp('20010101'), pd.Timestamp('20040605') ])
    df.ix[0]-df.ix[1]
    

    返迴:

     
    0   -1251 days
    dtype: timedelta64[ns]
    
    (df.ix[0]-df.ix[1]).astype('timedelta64[Y]')
    

    返迴:

     0   -4
     dtype: float64
    

    希望有帮助

  • 5月前
    4 #

    让我们指定您有一个名為time_difference的pandas系列,其型別為 numpy.timedelta64 [ns]

    一種仅提取日期(或任何所需屬性)的方法如下:

    just_day = time_difference.apply(lambda x: pd.tslib.Timedelta(x).days)
    

    之所以使用此函式,是因為numpy.timedelta64物件没有'days'屬性。

  • 5月前
    5 #

    要將任何型別的資料轉換為天數,只需使用Timedelta()。days:

    pd.Timedelta(1985, unit='Y').days
    84494
    

  • c#:並行執行任務
  • java:如何从位元組中提取MimeType []