首页>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 

但是,我似乎无法将日期提取为整数,因此我可以继续进行计算。 谢谢您的帮助。

最新回答
  • 2021-1-11
    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)

  • 2021-1-11
    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
    

  • 2021-1-11
    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
    

    希望有帮助

  • 2021-1-11
    4 #

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

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

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

    之所以使用此函数,是因为numpy.timedelta64对象没有'days'属性。

  • 2021-1-11
    5 #

    要将任何类型的数据转换为天数,只需使用Timedelta()。days:

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

  • c#:并行执行任务
  • java:如何从字节中提取MimeType []