如何使用Pandas将DataFrame单行拆分为两行日期数据?
需求实现方案
当然可以实现!这在Pandas里属于典型的行列转换操作,我给你一步步拆解具体怎么做:
1. 先构造原始DataFrame(模拟你给出的数据源)
首先我们先把你描述的表格用代码还原出来,方便后续操作:
import pandas as pd # 模拟你提供的原始DataFrame df = pd.DataFrame({ 0: ["Period Description Start Date End Date"], 1: ["8/1/2015 7/31/2016"], 2: ["8/1/2016 7/31/2017"], 3: ["8/1/2017 7/31/2018"] })
2. 核心处理步骤
接下来我们对数据进行拆分和重组:
# 提取原始的那一行数据 original_row = df.iloc[0] # 对列1到列3的日期字符串进行拆分,按空格分成开始日期和结束日期两部分 split_dates = original_row[1:].str.split(expand=True) # 构造最终的DataFrame:设置行索引为"Start Date"和"End Date",列沿用原列1、2、3 result_df = pd.DataFrame( split_dates.values.T, # 转置数据,让拆分后的日期对应到正确的行 index=["Start Date", "End Date"], columns=original_row.index[1:] )
3. 最终效果
运行完上面的代码后,result_df就是你想要的结果:
1 2 3 Start Date 8/1/2015 8/1/2016 8/1/2017 End Date 7/31/2016 7/31/2017 7/31/2018
简单解释下逻辑:我们先把每一列的日期字符串拆成两个部分,然后通过转置操作把拆分后的开始/结束日期分别对应到两行,最后给行加上你需要的标识即可,完全去掉了"Period Description"文本。
内容的提问来源于stack exchange,提问作者karan
相关产品推荐
相关产品推荐

