如何正确使用数据透视创建自定义列名称

埃德加姆采

我有一个数据框,其中包含多个按日期排序的因子值:

    date_and_time           date        hour    factor st0  st1     st2
0   2012-01-01 00:00:00     2012-01-01  0       PM25    69.4000     58.00000    51.60000
1   2012-01-01 00:00:00     2012-01-01  0       CO      1.3800      1.15714     1.06585
2   2012-01-01 01:00:00     2012-01-01  1       PM25    127.2000    77.33330    89.20000
3   2012-01-01 01:00:00     2012-01-01  1       CO      1.5800      1.57143     1.63169

我将如何获得:

    date_and_time           date        hour    PM25_st0  PM25_st1  PM25_st2 COst0  COst1   COst2
0   2012-01-01 00:00:00     2012-01-01  0       69.4000   58.0000   51.6000  1.3800 1.15714 1.06585
1   2012-01-01 01:00:00     2012-01-01  1       127.200   77.3333   89.2000  1.5800 1.57143 1.63169

基本上枢轴化并创建相应的列,首先我尝试这样做:

df_data = {
    'date_and_time': ['2012-01-01 00:00:00','2012-01-01 00:00:00','2012-01-01 01:00:00','2012-01-01 01:00:00' ],
    'date': ['2012-01-01','2012-01-01','2012-01-01','2012-01-01'],
    'hour':[0,0,1,1],
    'factor':['PM25','CO','PM25','CO'],
    'st0':[69.4000 ,1.3800,127.2000,1.5800],
    'st1':[58.00000,1.15714,77.33330,1.57143],
    'st2':[51.60000,1.06585,89.20000,1.63169]
}

df_test = pd.DataFrame(df_data, columns = ['date_and_time', 'date','hour','factor','st0','st1','st2'])



df_pivoted = pd.pivot_table(df_test,index=["date_and_time","date","hour"],columns=["factor"],values=["st0","st1","st2"])

并得到:

在此处输入图片说明

有没有一种方法可以按因子自定义列?

耶斯列尔

DataFrame.sort_index由的第二级使用MultiIndex in columns,然后列出f-string具有交换级的s的理解,最后DataFrame.reset_index列出来自的列MultiIndex in index

df_pivoted = df_pivoted.sort_index(axis=1, level=1)
df_pivoted.columns = [f'{b}_{a}' for a, b in df_pivoted.columns]
df_pivoted = df_pivoted.reset_index()
print (df_pivoted)
         date_and_time        date  hour  CO_st0   CO_st1   CO_st2  PM25_st0  \
0  2012-01-01 00:00:00  2012-01-01     0    1.38  1.15714  1.06585      69.4   
1  2012-01-01 01:00:00  2012-01-01     1    1.58  1.57143  1.63169     127.2   

   PM25_st1  PM25_st2  
0   58.0000      51.6  
1   77.3333      89.2  

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在SQL Server中进行数据透视时获取自定义列名称

Laravel 5.8 多对多关系使用数据透视表的自定义列名

Excel:如何在数据透视表中创建自定义年龄范围组?

创建动态数据透视表列名称

Xamarin 如何使用自定义数据创建 customCell

如何添加自定义列名称Spring Data JPA?

创建插件时,如何正确将数据提交到自定义数据库?

JqGrid:自定义列名称显示

EPPlus自定义标题列名称

自定义数据源对象未正确创建

Postgres Docker映像未使用自定义名称创建数据库

使用自定义名称在R中动态创建数据框

如何在Gerrit下创建自定义名称空间?

如何创建自定义 AWS 资源名称?

如何正确创建自定义空纹理?

如何正确创建带有消息的自定义异常?

如何在JavaScript中“正确”创建自定义对象?

如何正确扩展LinearLayout以创建自定义视图

如何使用与帖子类型名称不同的存档段创建自定义帖子类型

如何使用样式化组件创建自定义属性名称?

根据条件使用新的列名称创建pandas数据透视表

使用自定义名称创建pst文件

如何使用Spring Integration从Java Bean正确创建RabbitMQ自定义消息?

如何使用xib文件正确创建自定义单元,注册并加载它?

如何使用自定义参数正确创建Spring Cloud Task?

如何使用Vue-Socket.io正确创建自定义套接字方法?

如何使用 Typescript 正确创建自定义 Express.js 请求接口?

如何对树数据使用自定义

如何在透视中为列提供自定义名称