如何将DataFrame中含日期时间的列拆分至对应日期列?
提取营业时间到对应日期列的Pandas解决方案
实现代码
import pandas as pd data = [{'timings' : 'Friday 10 am - 6:30 pm$Saturday 10am-6:30pm$Sunday Closed$Monday 10am-6:30pm$Tuesday 10am-6:30pm$Wednesday 10am-6:30pm$Thursday 10am-6:30pm', 'monday':'','tuesday':'','wednesday':'','thursday':'','friday':'','saturday':'','sunday':'' }] df = pd.DataFrame.from_dict(data) # 遍历每行处理营业时间 for idx, row in df.iterrows(): # 按$分割单个日期的营业时间条目 timing_items = row['timings'].split('$') for item in timing_items: # 拆分日期和营业时间(仅分割第一个空格,避免营业时间含空格的问题) day_part, hour_part = item.split(' ', 1) # 转换日期为小写,匹配DataFrame列名 target_col = day_part.lower() # 将营业时间赋值到对应列 if target_col in df.columns: df.at[idx, target_col] = hour_part.strip() # 查看处理结果 print(df)
代码说明
- 用
split('$')把timings列的内容拆分成单个日期的营业时间条目 - 对每个条目用
split(' ', 1)拆分日期和营业时间,确保营业时间里的空格不会被误分割 - 将日期转换为小写,和DataFrame中已有的
monday、friday等列名匹配 - 用
df.at精准定位行和列,把营业时间赋值到对应位置
适配其他分隔符的情况
如果timings列用其他分隔符(比如逗号),只需修改split的参数即可。比如分隔符是逗号时,把row['timings'].split('$')改成row['timings'].split(',')。
内容的提问来源于stack exchange,提问作者Rushabh Nalawade
相关产品推荐
相关产品推荐

