dataframe时间操作

本文详细介绍了如何使用Python的pandas库将字符串表示的时间转换为时间序列,以及如何从完整的时间戳中提取年月信息进行进一步的数据分析。通过具体代码示例展示了时间格式的转换方法,包括将时间转换为特定格式如'Y-m',以及如何保留原始精度用于后续处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.将字符串表示的时间转换为时间序列:

record['HAPPEN_TIME'] = pd.to_datetime(record['HAPPEN_TIME'], format='%Y-%m-%d %H:%M:%S')

2.从年月日时分秒的时间中提取年月

record['HAPPEN_TIME']直接转化:record['HAPPEN_TIME'].apply(lambda x:datetime.strftime(x,'%Y-%m'))

这样也可以将时间直接转换为Y-m的格式,但是后面还要用到精确到秒的标准时间,所以不能直接转换,因此在记录表中新增一列,ym列,代表统计出的年月。

record['ym']=record['HAPPEN_TIME']
record['ym'] =record['ym'].apply(lambda x:datetime.strftime(x,'%Y-%m'))

ym列格式转换前:

ym列格式转换后:

3.datetime格式获取年,月,日

<think>我们被要求使用中文回答问题,并且在回答完问题后,必须根据用户的问题及回答提出3-5个相关问题,以“§§相关问题§§”开头,并且问题以列表形式连续输出(禁止换行分散)。 用户的问题是:dataframe高级操作 我们需要介绍一些pandas DataFrame的高级操作,然后提出相关问题。 DataFrame高级操作可以包括: 1. 复杂的数据筛选(使用query、布尔索引等) 2. 多级索引(MultiIndex)的操作 3. 分组聚合(groupby)的高级用法(如使用agg进行多种聚合、使用transform等) 4. 数据透视表(pivot_table)和交叉表(crosstab) 5. 合并数据集(merge, join, concat)的高级用法 6. 处理缺失数据的高级技巧(如插值、填充等) 7. 类别数据类型(category)的使用 8. 使用apply和applymap进行元素级或行列级操作 9. 时间序列数据的重采样(resample)和滑动窗口(rolling) 10. 性能优化技巧(如使用向量化操作、避免循环等) 由于问题范围较广,我们可以选择几个典型的高级操作进行介绍,并附上代码示例。 注意:在回答中,我们需要使用中文,并且最后必须输出“§§相关问题§§”以及3-5个相关问题。 下面是一个回答的示例:</think>### DataFrame高级操作详解 在Pandas中,DataFrame的高级操作能显著提升数据处理效率。以下是核心技巧及代码示例: #### 1. **多条件筛选与赋值** ```python # 筛选年龄>30且销售额>5000的记录,并创建新列 df.loc[(df['age']>30) & (df['sales']>5000), 'bonus'] = df['sales']*0.1 ``` #### 2. **多级索引操作** ```python # 创建多级索引 multi_df = df.set_index(['region', 'product']) # 跨层级筛选 multi_df.xs(('East', 'Widget'), level=('region','product')) ``` #### 3. **高级分组聚合** ```python # 多维度分组+自定义聚合 agg_result = df.groupby('dept').agg( avg_salary=('salary', 'mean'), total_sales=('sales', lambda x: x.sum() * 1.1) # 含计算逻辑 ) ``` #### 4. **数据透视表** ```python # 多维度交叉分析 pivot_table = pd.pivot_table( df, values='sales', index=['region', pd.Grouper(key='date', freq='M')], columns='product', aggfunc=[np.sum, np.mean], fill_value=0 ) ``` #### 5. **高效合并与条件更新** ```python # 根据条件更新值 df.loc[df['status'] == 'VIP', 'discount'] = 0.8 # 复杂合并(保留左表所有记录) merged = pd.merge( df1, df2, on='id', how='left', suffixes=('_main', '_ref'), validate='one_to_many' ) ``` #### 6. **内存优化技巧** ```python # 自动转换数据类型 optimized_df = df.convert_dtypes() # 分类数据压缩 df['category'] = df['category'].astype('category') ``` #### 7. **高性能函数应用** ```python # 向量化计算替代循环 df['profit'] = df['revenue'] - df['cost'] * (1 - df['discount']) # 多列并行处理 df[['log_rev', 'sqrt_cost']] = df.apply( lambda row: [np.log(row['revenue']), np.sqrt(row['cost'])], axis=1, result_type='expand' ) ``` > **最佳实践**:优先使用向量化操作(如`df.apply()`替代循环),大数据集用`pd.eval()`加速计算,定期用`df.memory_usage()`监控内存。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值