要在DataFrame两列日期相减并且得到具体的月数,可以使用 pandas 库中的 pd.to_datetime
函数和 dt
属性。
首先,使用 pd.to_datetime
将日期字符串转为 datetime 类型。然后,使用 dt
属性获取日期的年、月信息,并计算相差的月数。
示例一:
假设有一个 DataFrame,其中包含了两列日期,分别为 start_date
和 end_date
。我们想要计算这两个日期间相差的月数:
import pandas as pd
# 创建示例 DataFrame
df = pd.DataFrame({
'start_date': ['2020-01-01', '2021-02-01', '2021-03-01'],
'end_date': ['2021-09-01', '2022-03-01', '2022-06-01']
})
# 将日期字符串转为 datetime 类型
df['start_date'] = pd.to_datetime(df['start_date'])
df['end_date'] = pd.to_datetime(df['end_date'])
# 计算相差的月数
df['months_difference'] = (df['end_date'].dt.year - df['start_date'].dt.year) * 12 + (df['end_date'].dt.month - df['start_date'].dt.month)
print(df)
输出结果:
start_date end_date months_difference
0 2020-01-01 2021-09-01 20
1 2021-02-01 2022-03-01 13
2 2021-03-01 2022-06-01 15
示例二:
我们可以使用 pandas.DataFrame.apply()
方法,对 DataFrame 的每一行进行处理,以计算两列日期的月数差。
import pandas as pd
# 创建示例 DataFrame
df = pd.DataFrame({
'start_date': ['2020-01-01', '2021-02-01', '2021-03-01'],
'end_date': ['2021-09-01', '2022-03-01', '2022-06-01']
})
# 将日期字符串转为 datetime 类型
df['start_date'] = pd.to_datetime(df['start_date'])
df['end_date'] = pd.to_datetime(df['end_date'])
# 定义函数,计算相差的月数
def month_difference(row):
return (row['end_date'].year - row['start_date'].year) * 12 + (row['end_date'].month - row['start_date'].month)
# 对每一行数据应用函数
df['months_difference'] = df.apply(month_difference, axis=1)
print(df)
输出结果与示例一相同:
start_date end_date months_difference
0 2020-01-01 2021-09-01 20
1 2021-02-01 2022-03-01 13
2 2021-03-01 2022-06-01 15
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在dataframe两列日期相减并且得到具体的月数实例 - Python技术站