如何从pandas数据帧中获取最大天数



我有以下panda数据帧:

import pandas as pd
df = pd.DataFrame({'ID': [1,2,3,4],
'month': [12, 2, 8, 6],
'year': [2021, 2022, 2022, 2020]})
print(df)
ID   month   year
1   12      2021
2   2       2022
3   8       2022
4   6       2020

我需要在数据帧中添加一个新列。此列必须包含数据帧行的月份和年份的最大日期。在互联网上搜索,我发现了";days_in_month";并实现如下:

df['Max_day'] = 0
for i in range(0,len(df)):
v_month = df['month'].loc[i]
v_year = df['year'].loc[i]
df['Max_day'].loc[i] = pd.Period(v_year.astype(str) + "-" + 
v_month.astype(str)).days_in_month

此实现工作完美,输出如所需:

ID  month   year    Max_day
1   12      2021    31
2   2       2022    28
3   8       2022    31
4   6       2020    30

但是,运行此代码需要很长时间。有人知道优化运行时的方法吗?

使用to_datetime和3列year, month, day作为日期时间,然后使用Series.dt.days_in_month:

df['Max_day'] = pd.to_datetime(df[['year','month']].assign(day=1)).dt.days_in_month
print(df)
ID  month  year  Max_day
0   1     12  2021       31
1   2      2  2022       28
2   3      8  2022       31
3   4      6  2020       30

相关内容

  • 没有找到相关文章

最新更新