如何为Unstack重塑后的DataFrame添加新列?
给Unstack后的DataFrame添加新列的方法
嘿,你已经通过unstack(0)把数据成功转成宽表格式了,给这个重塑后的DataFrame加新列其实和操作普通Pandas DataFrame完全一样,下面给你几种实用的方法:
1. 直接赋值添加单个列
这是最直观的方式,不管是给列赋固定值,还是基于现有列计算新值都适用:
# 示例1:添加一个固定值的列 SGE['Fixed_Value_Col'] = 100 # 示例2:基于已有列计算(比如计算2015年1月和2月的收入平均值) SGE['Jan_Feb_Average'] = (SGE['2015-01'] + SGE['2015-02']) / 2
2. 用assign()批量添加多列
如果需要一次性添加多个新列,assign()方法会让代码更简洁易读,还支持链式操作:
# 一次性添加"总收入"和"最高收入"两列 SGE = SGE.assign( Total_2015=lambda df: df['2015-01'] + df['2015-02'] + df['2015-03'], Max_Monthly_Income=lambda df: df[['2015-01', '2015-02', '2015-03']].max(axis=1) )
这里的lambda df里的df指代当前的DataFrame,你可以直接用它来引用已有列进行计算。
3. 根据索引(History)映射添加列
如果新列的值和你的行索引History相关,可以用map()方法来匹配映射关系:
# 假设我们有一个History到用户类型的映射字典 history_to_type = {1: '新用户', 2: '回流用户', 3: '忠实用户'} # 映射生成新列 SGE['User_Type'] = SGE.index.map(history_to_type)
小提醒
- 注意列名的准确性:你的列名是日期字符串(比如
'2015-01'),引用的时候要确保字符串完全匹配,别打错日期格式 - 处理空值:如果计算过程中出现NaN,可以用
fillna()提前处理,比如(SGE['2015-01'] + SGE['2015-02']).fillna(0)/2
内容的提问来源于stack exchange,提问作者Kbbm
相关产品推荐
相关产品推荐

