python中使用pd.to_datetime函数从1970开始的情况

python中使用pd.to_datetime函数从1970开始以纳秒计时的情况

dataframe的时间列操作

将图中的日期用pd.to_datetime转为datetime

在这里插入图片描述

yq_df['date'] = pd.to_datetime(yq_df['date'])

使用上面代码之后 时间变成了1970年
在这里插入图片描述

解决办法 修改类型即可

我的原始数据类型为int 所以出现了1970的情况

yq_df['date'] = yq_df['date'].astype('str')
yq_df['date'] = pd.to_datetime(yq_df['date'])

DataFrame从一列datetime提取三列年月日

yq_df['date'] = yq_df['date'].astype('str')
yq_df['date'] = pd.to_datetime(yq_df['date'])
yq_df['year'] = yq_df['date'].dt.year
yq_df['month'] = yq_df['date'].dt.month
yq_df['day'] = yq_df['date'].dt.day
print(yq_df)

结果如下图
在这里插入图片描述

DataFrame中的datetime列时间切片

方法一 直接切片 时间切片即取头也取到尾

 yq_df.index = yq_df['date']
 print(yq_df['2020':'2021'])
 print(yq_df['2020-01':'2020-03'])

方法二 truncate

yq_data = df.truncate('1/1/2020', '2/25/2022')

方法三 loc

yq_data = df.loc[(movie_df_not_null.index > '2020-01-01') & (df.index < '2020-02-25')]
  • 12
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
要将导出的 Excel 的合同开始日期字段只显示年月日,可以使用 pandas 的 to_datetime 方法的 strftime 函数将日期格式化为字符串再导出到 Excel 。修改代码如下: ``` import numpy as np from datetime import datetime, timedelta import pandas as pd test = pd.read_excel("C:\\Users\\1data\\Desktop\\DBM成本收入核算\\test.xlsx") start_date = pd.to_datetime(test['合同开始日期']) end_date = pd.to_datetime(test['合同截止日期']) test['合同周期月数'] = round((end_date - start_date) / np.timedelta64(1, 'M')) start_date_col = '合同开始日期' end_date_col = '合同截止日期' new_col = '日期' for index, row in test.iterrows(): start_date = pd.to_datetime(row[start_date_col]) end_date = pd.to_datetime(row[end_date_col]) date_list = [] if start_date.day <= 15: while start_date <= end_date: date_list.append(start_date) start_date = start_date + timedelta(days=30) else: start_date = start_date + timedelta(days=30) while start_date <= end_date + timedelta(days=30): date_list.append(start_date) start_date = start_date + timedelta(days=30) # 格式化日期字符串为年月日 date_str_list = [date.strftime('%Y-%m-%d') for date in date_list] test.loc[index, new_col] = ','.join(date_str_list) # 将日期字段拆分为多列 df_tmp = test['日期'].str.split(',', expand=True) df_tmp = df_tmp.stack() df_tmp = df_tmp.reset_index(level=1, drop=True) df_tmp.name = '日期' # 将拆分后的日期列与原始 DataFrame 合并 df_new = pd.concat([test.drop(['日期'], axis=1), df_tmp], axis=1) df_new = df_new.reset_index().drop(columns='index') # 计算合同周期年月 df_new['合同周期年月'] = df_new['合同周期月数'].apply(lambda x: f"{int(x//12)}年{int(x%12)}月") # 导出到 Excel df_new.to_excel('income_test.xlsx', index=False) ``` 这样导出的 Excel 文件的合同开始日期字段只显示年月日,而新增日期字段的取年月的字段合同周期年月也被计算出来了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BRYTLEVSON

打赏的都是天使,创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值