Pandas行列转换

一、问题描述

在实际的数据处理过程中,常常会遇到需要将DataFrame中的列转换为行或将行转换为列的情况。但是,如果使用传统的Python方法,这种操作会非常繁琐且容易出错。因此,我们可以使用pandas库提供的优雅方式来完成列转行或行转列的任务。

二、列转行

1、函数melt

melt的主要参数:

pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value',ignore_index=True,  col_level=None)

下面解释参数的含义:

  • frame:要处理的数据框DataFrame。

  • id_vars:表示不需要被转换的列名

  • value_vars:表示需要转换的列名,如果剩下的列全部都需要进行转换,则不必写

  • var_name和value_name:自定义设置对应的列名,相当于是取新的列名

  • igonore_index:是否忽略原列名,默认是True,就是忽略了原索引名,重新生成0,1,2,3,4…的自然索引

  • col_level:如果列是多层索引列MultiIndex&#

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我们可以使用 pandas 中的 `pivot` 和 `melt` 函数来进行行列转换。 假设我们有以下的数据集: ``` +------+--------+-------+ | Name | Gender | Score | +------+--------+-------+ | Tom | Male | 85 | +------+--------+-------+ | Amy | Female | 90 | +------+--------+-------+ | Jim | Male | 75 | +------+--------+-------+ | Kim | Female | 80 | +------+--------+-------+ ``` 我们想要将 `Gender` 列作为行索引,将 `Name` 列作为列索引,将 `Score` 列的值填充到新的表格中。那么我们可以使用 `pivot` 函数来实现: ```python import pandas as pd data = { 'Name': ['Tom', 'Amy', 'Jim', 'Kim'], 'Gender': ['Male', 'Female', 'Male', 'Female'], 'Score': [85, 90, 75, 80] } df = pd.DataFrame(data) new_df = df.pivot(index='Gender', columns='Name', values='Score') ``` 得到的新表格如下: ``` +--------+------+-----+-----+-----+ | Gender | Amy | Jim | Kim | Tom | +--------+------+-----+-----+-----+ | Female | 90 | 0 | 80 | 0 | +--------+------+-----+-----+-----+ | Male | 0 | 75 | 0 | 85 | +--------+------+-----+-----+-----+ ``` 如果我们想要将列索引转换成行索引,那么我们可以使用 `melt` 函数来实现: ```python new_df = new_df.reset_index() melt_df = pd.melt(new_df, id_vars=['Gender'], var_name='Name', value_name='Score') melt_df = melt_df[melt_df['Score'] != 0].reset_index(drop=True) ``` 得到的新表格如下: ``` +--------+------+-------+ | Gender | Name | Score | +--------+------+-------+ | Female | Amy | 90 | +--------+------+-------+ | Female | Kim | 80 | +--------+------+-------+ | Male | Jim | 75 | +--------+------+-------+ | Male | Tom | 85 | +--------+------+-------+ ``` 以上就是 pandas 行列转换的方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值