【问题标题】:How to apply function to a dataframe [duplicate]如何将功能应用于数据框[重复]
【发布时间】:2020-07-26 09:03:46
【问题描述】:

我在下面有一个函数来查找一个月中有多少天

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: the truth value of a Series 是模棱两可的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

如何将此函数与我的数据框一起使用,或者我必须在函数中手动输入这些输入?

谢谢

【问题讨论】:

  • 你也可以直接使用pandas函数:pd.to_datetime(df[['Year','Month']].astype(str).agg('-'.join,1),format="%Y-%m").dt.daysinmonth
  • 谢谢,这也有效。请问“申请”和你的方法有什么区别?它只是让我感到困惑 dt.daysinmonth 和 calendar.monthrange 都是内置函数,但以不同的格式工作。那么我怎么知道该使用哪一个呢?

标签: python pandas


【解决方案1】:

你必须使用 apply 代替:

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

【讨论】:

  • 谢谢,这行得通。请问,对于所有需要输入的功能,如果我想在数据框上使用它,我可以通过使用“应用”来遵循这个?
  • 是的,应用基本上通过数据框的所有行。那你能考虑接受答案吗? @ThugChickensoimba
猜你喜欢
  • 2015-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-15
  • 1970-01-01
  • 2018-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多