如何在Python中调整DataFrame形状?附代码及目标输出需求
解决DataFrame形状调整问题
你的DataFrame中Date列的缺失值对应同周期的Interest条目,我们可以通过填充缺失值+透视表重组的方式,将数据转换为日期为行、利息/本金为列的结构,具体操作如下:
步骤1:填充缺失的日期值
每个Interest对应的日期就是下一行Principal的日期,用bfill()方法向下填充缺失值:
df['Date'] = df['Date'].bfill()
步骤2:透视表重组结构
用pivot()方法将Cftype的不同取值转为列,Date作为行索引,CF作为对应值:
result_df = df.pivot(index='Date', columns='Cftype', values='CF').reset_index() result_df.columns.name = None # 移除列名的层级标记
完整可运行代码
import pandas as pd import numpy as np df = pd.DataFrame({'Date' : [np.nan, '2035-12-31', np.nan, '2036-12-31',np.nan, '2037-12-31',np.nan, '2038-12-31'], 'Cftype': ["Interest", "Principal", "Interest", "Principal","Interest", "Principal", "Interest", "Principal"], 'CF': [12,23,34,89,45,4,54,78] }) # 填充缺失日期 df['Date'] = df['Date'].bfill() # 重组数据结构 result_df = df.pivot(index='Date', columns='Cftype', values='CF').reset_index() result_df.columns.name = None print(result_df)
最终输出结果
Date Interest Principal 0 2035-12-31 12 23 1 2036-12-31 34 89 2 2037-12-31 45 4 3 2038-12-31 54 78
如果你的目标输出结构和上述不同,可以补充具体格式要求,再调整处理方案。
内容的提问来源于stack exchange,提问作者TRex
相关产品推荐
相关产品推荐

