首页 > 解决方案 > Pandas Dataframe:如果相应的“年”是闰年,则将“天”的值减少 1

问题描述

如果'Days' 大于例如10 并且相应的'Year' 是闰年,则仅在该特定行中将'Days' 减1。我尝试了一些操作,但无法做到。我是熊猫新手。感谢任何帮助。

样本数据:

data = [['1', '2005'], ['2', '2006'], ['3', '2008'],['50','2009'],['69','2008']] 
df=pd.DataFrame(data,columns=['Days','Year'])

我希望第 5 行的“天数”变为 69,其他一切都保持不变。

标签: python-3.xpandasdataframe

解决方案


In [98]: import calendar
In [99]: data = [['1', '2005'], ['2', '2006'], ['3', '2008'],['50','2009'],['70','2008']] ;df=pd.DataFrame(data,column
    ...: s=['Days','Year'])

In [100]: df = df.astype(int)

In [102]: df["New_Days"] = df.apply(lambda x: x["Days"]-1 if (x["Days"] > 10 and calendar.isleap(x["Year"])) else x["D
     ...: ays"], axis=1)

In [103]: df
Out[103]:
   Days  Year  New_Days
0     1  2005         1
1     2  2006         2
2     3  2008         3
3    50  2009        50
4    70  2008        69

推荐阅读