提取没有的NaNs。在熊猫的两个日期之间的天

时间:2016-12-22 04:42:34

标签: python pandas

我有一个包含group_id,seniority,join_date和quit_date列的数据框。我想提取加入日期和退出日期之间的天数。但是,我得到了NaNs。

如果我删除数据框中除退出日期和加入日期之外的所有列并再次运行相同的代码,我会得到我期望的结果。但是对于所有列,我得到了NaN。

这是我的代码:

df['join_date'] = pd.to_datetime(df['join_date'])
df['quit_date'] = pd.to_datetime(df['quit_date'])
df['days'] = df['quit_date'] - df['join_date']
df['days'] = df['days'].astype(str)
df1 = pd.DataFrame(df.days.str.split(' ').tolist(), columns = ['days', 'unwanted', 'stamp'])
df['numberdays'] = df1['days']

这就是我得到的:

days                  numberdays
585 days 00:00:00        NaN
340 days 00:00:00        NaN

我想在'numberdays'栏中的'days'栏中输入585。同样对于每一行。

有人可以帮我这个吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

使用dt访问器从timedelta值中提取天数,而不是转换为字符串。

import pandas as pd

df = pd.DataFrame({'join_date': ['2014-03-24', '2013-04-29', '2014-10-13'],
                   'quit_date':['2015-10-30', '2014-04-04', '']})
df['join_date'] = pd.to_datetime(df['join_date'])
df['quit_date'] = pd.to_datetime(df['quit_date'])

df['days'] = df['quit_date'] - df['join_date']
df['number_of_days'] = df['days'].dt.days
@Mohammad Yusuf Ghazi指出,在使用datetime数据而不是timedelta时,dt.day是获取天数而不是dt.days所必需的。