最终,我想计算从每个日期到该月最后一天的天数df['start'],并用结果填充该'count'列。
作为实现该目标的第一步,该calendar.monthrange
方法采用(年、月)参数并返回(第一个工作日、天数)元组。
将函数应用于数据框或系列对象似乎存在一个普遍错误。我想了解为什么这不起作用。
import numpy as np
import pandas as pd
import calendar
def last_day(row):
return calendar.monthrange(row['start'].dt.year, row['start'].dt.month)
Run Code Online (Sandbox Code Playgroud)
此行引发 AttributeError:“Timestamp 对象没有属性 'dt'”:
df['count'] = df.apply(last_day, axis=1)
Run Code Online (Sandbox Code Playgroud)
这就是我的数据框的样子:
start count
0 2016-02-15 NaN
1 2016-02-20 NaN
2 2016-04-23 NaN
df.dtypes
start datetime64[ns]
count float64
dtype: object
Run Code Online (Sandbox Code Playgroud)
Ste*_*uch 10
去除.dt。访问某种向量时通常需要这样做。但是当访问单个元素时,它已经是一个datetime对象了:
def last_day(row):
return calendar.monthrange(row['start'].year, row['start'].month)
Run Code Online (Sandbox Code Playgroud)
这apply调用last_day并传递了一个 Series。
df['count'] = df.apply(last_day, axis=1)
Run Code Online (Sandbox Code Playgroud)
然后last_day选择该系列中的单个元素:
row['start'].year
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22049 次 |
| 最近记录: |