Python 如何将函数应用于数据帧

Python 如何将函数应用于数据帧,python,pandas,Python,Pandas,我在下面有一个函数来计算一个月有多少天 import calendar calendar.monthrange(2012,2)[1] 这份申报表是29 我的问题是,现在我有一个包含100+(年、月)的数据帧 2012,2 2012,3 2013,1 2016,7 2015,4 我已经将数据帧定义为df['Year']和df['Month'],当我将这两个元素插入函数时 import calendar calendar.monthrange(df['Year'],df['Month'])[1]

我在下面有一个函数来计算一个月有多少天

import calendar
calendar.monthrange(2012,2)[1]
这份申报表是29

我的问题是,现在我有一个包含100+(年、月)的数据帧

2012,2

2012,3

2013,1

2016,7

2015,4

我已经将数据帧定义为df['Year']和df['Month'],当我将这两个元素插入函数时

import calendar
calendar.monthrange(df['Year'],df['Month'])[1]
它告诉我ValueError:级数的真值是模糊的。使用a.empty、a.bool()、a.item()、a.any()或a.all()

如何在数据帧中使用此函数,或者必须手动在函数中键入这些输入


谢谢

您必须改用apply:

df.apply(lambda row: calendar.monthrange(row['Year'],row['Month'])[1], axis=1)

您也可以直接使用pandas函数:
pd.to_datetime(df[['Year','Month']].astype(str).agg('-'.join,1),format=“%Y-%m”).dt.daysinmonth
谢谢,这同样有效。请问“应用”和你的方法有什么区别?这让我很困惑,dt.daysinmonth和calendar.monthrange都是内置函数,但工作格式不同。那我怎么知道该用哪一个呢?谢谢,这个有用。我可以问一下,对于所有需要输入的函数,若我想在数据帧上使用它,我可以通过使用“应用”来遵循这一点吗?是的,应用基本上通过数据帧的所有行。你能考虑接受这个答案吗?图吉肯索伊姆巴