python 做行转列通过enbid对应多个cell一行显示

今日领导要求把基站和小区对应起来并在一行显示。使用excel发现透视中无值选项。
在这里插入图片描述通过python 中panda库中的pivot函数解决。
pivot(index=None, columns=None, values=None)
index: 可选参数。设置新dataframe的行索引,如果未指明,就用当前已存在的行索引。
columns:必选参数。用来设置作为新dataframe的列索引。
values:可选参数。在原dataframe中选中某一列/几列的值,使其在新dataframe的列里显示。如果不指定,则默认将原dataframe中所有的列都显示,这里需要注意:为了将所有的值都显示出来,就会出现多层行索引的情况。
代码如下:
df = pd.read_excel(‘F:\python\python_project\行转列\行转列.xlsx’, encoding=‘gbk’)
date=df.pivot( index= ‘enbo’,columns= ‘lCI’, values= ‘CI’)
备注:pd.pivot_table(df, index= ‘enbo’,columns= ‘ICI’, values= ‘CI’,aggfunc={ ‘CI’: ‘max’})

注意:原表中没有重复的 enbid+LCI ,重复报错。现场实际情况下 ebid+CI是唯一的才对。
如果重复可删除的可以使用df.drop_duplicates.pivot( index= ‘enbo’,columns= ‘lCI’, values= ‘CI’)
拓展学习:
pivot_table 类似于excel中的透视功能
pivot_table(data, values=None, index=None, columns=None,aggfunc=‘mean’, fill_value=None, margins=False, dropna=True, margins_name=‘All’)

pd.pivot_table( df, index=[“Counterparty”,“Trader”] )
必须参数date 和index ,注意输出的结果会把int 和float类型进行平均值计算。
pd.pivot_table(df, index=label_list, values=label_list) ,制定显示结果用values。
pd.pivot_table(df, index=label_list, values=label_list, aggfunc=func),aggfunc对values进行计算,实例中np.sum,求和。 同时func可以是列表定义多种聚合计算aggfunc=[len, np.sum]
以上是对列操作
接下来是行操作:
d.pivot_table(df, index=label_list, values=label_list, columns=label_list, aggfunc=func_list) 利用columns参数对行转变为列进行聚合呈现。fill_value=0可把空值赋值0.

aggfunc = {col_1:func_1, col_2:func_2, … col_n:func_n} 对多个values计算。

设置 margins=True 总计

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值