pandas 某整列天数转年限的更精确方法,求大师帮忙
本帖最后由 futui 于 2023-4-12 07:45 编辑pandas某整列为天数,需要转年限 ,下面是代码,有更精确的方法吗(?年?月?日),求大师指导
def days_to_years(days):
return np.floor(days / 365)
# 使用 apply() 函数将函数应用到数据框中的整列
df['years_column'] = df['days_column'].apply(lambda x: days_to_years(x)) 为了将天数转换为更精确的年限格式(包括年、月和日),可以使用divmod()函数。
divmod()函数接受两个参数,第一个参数是要除的数,第二个参数是除数,返回商和余数。
这里是一个改进的days_to_years()函数,它将天数转换为x年y月z日的格式:
import pandas as pd
import numpy as np
def days_to_years(days):
years, remaining_days = divmod(days, 365)
months, days = divmod(remaining_days, 30)
return f"{years}年{months}月{days}日"
# 使用 apply() 函数将函数应用到数据框中的整列
df['years_column'] = df['days_column'].apply(lambda x: days_to_years(x))
请注意,这个方法假设每年有365天,每月有30天。这是一个简化的近似,因为实际上每年和每月的天数可能有所不同。
为了更精确地计算日期差异,可以使用Python的dateutil库:
首先,确保已经安装了dateutil库,如果没有的话,可以通过以下命令安装:
pip install python-dateutil
然后,可以使用dateutil库中的relativedelta函数来更精确地计算日期差异:
import pandas as pd
from datetime import date
from dateutil.relativedelta import relativedelta
def days_to_years(start_date, days):
end_date = start_date + pd.Timedelta(days=days)
delta = relativedelta(end_date, start_date)
return f"{delta.years}年{delta.months}月{delta.days}日"
start_date = date(2000, 1, 1)
df['years_column'] = df['days_column'].apply(lambda x: days_to_years(start_date, x))
这种方法需要一个起始日期(start_date),从该日期开始计算天数。
这里我们假设所有天数都是从2000年1月1日开始计算的,你可以根据你的需求更改这个日期。
页:
[1]