添加日期与数据帧之间存在差异的列

2024-09-21 00:58:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这种数据帧:

season       Date          Holiday_Name  
12-13        11/1/12          NaN        
12-13        11/2/12          Nan        
12-13        3/31/13         Easter        
12-13         4/5/13           NaN           

13-14        11/1/13          NaN.  
13-14        4/18/14          Nan.   
13-14        4/20/14         Easter.  
13-14        4/22/14          Nan.   

等等

我需要的是一个新的专栏,每个季节都有与复活节不同的天数

我尝试过groupby,对于循环(即使我知道它是错误的),在这种方法中,似乎什么都不起作用

dataset["difference"] = dataset["Date"] -dataset["Date"].where(dataset["holiday_name"]=="Easter").days

但它给了我一个错误:

'Series' object has no attribute 'days'

dataset['differenza_pasqua'] = pd.Index(dataset["Data"] -dataset["Data"].where(dataset["holiday_name"]=="Pasqua di Resurrezione").dropna()).days

有了这个,我可以将复活节设置为0,但其他的都标记为NaN

我所期望的是这样的:

season       Date          Holiday_Name      difference  
12-13        11/1/12          NaN               150    
12-13        11/2/12          NaN               149.  
12-13        3/31/13         Easter              0.  
12-13        4/5/13           NaN                5.  

13-14        11/1/13          NaN               150.  
13-14        4/18/14          Nan                 2.  
13-14        4/20/14         Easter               0.   
13-14        4/22/14          Nan                 2.   

谢谢你的帮助


Tags: namedate错误nanwheredaysdatasetseason
1条回答
网友
1楼 · 发布于 2024-09-21 00:58:04

使用groupby很容易解决这个问题

ddf = df.groupby('season').apply(lambda x : x['Date'] - x.loc[x['Holiday_Name'] == 'Easter']['Date'].iloc[0]).reset_index()
df['difference'] = ddf['Date']

  season       Date Holiday_Name difference
0  12-13 2012-11-01          NaN  -150 days
1  12-13 2012-11-02          Nan  -149 days
2  12-13 2013-03-31       Easter     0 days
3  12-13 2013-04-05          NaN     5 days
4  13-14 2013-11-01          NaN  -170 days
5  13-14 2014-04-18          Nan    -2 days
6  13-14 2014-04-20       Easter     0 days
7  13-14 2014-04-22          Nan     2 days

注意:您需要从“Nan”中的数据中删除点。复活节。”

相关问题 更多 >

    热门问题