首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Concat/Transpose/Groupby pandas列

Concat/Transpose/Groupby pandas列
EN

Stack Overflow用户
提问于 2021-10-27 15:33:09
回答 1查看 30关注 0票数 0

因此,我在pandas中有以下DataFrame

代码语言:javascript
复制
Column 1   | Column 2

Name       |  A
Number     |  B
Age        |  C
Name       |  D
Number     |  E
Age        |  F

每个名称,编号和年龄分组在一起都与一个特征相关,并在整个日期框中重复。我想知道用以下格式获取它的最好方法是什么?

代码语言:javascript
复制
           Name | Number | Age
Feature 1    A  |    B   |  C
Feature 2    D  |    E   |  F

任何帮助都将不胜感激,因为我对我将使用的函数或方法感到困惑!

EN

回答 1

Stack Overflow用户

发布于 2021-10-27 15:45:05

这是一个轴心,但您首先需要创建一个标签来将3行的集合分组在一起。如果数据足够干净,以至于DataFrame总是按Name,Number,Age,Name,Number,Age,...排序,您可以cumsum一个布尔序列,检查哪些行是'Name‘,以便将它们分组在一起。

代码语言:javascript
复制
df['index'] = 'Feature ' + df['Column 1'].eq('Name').cumsum().astype(str)
#  Column 1 Column 2      index
#0     Name        A  Feature 1
#1   Number        B  Feature 1
#2      Age        C  Feature 1
#3     Name        D  Feature 2
#4   Number        E  Feature 2
#5      Age        F  Feature 2

df = (df.pivot(index='index', columns='Column 1', values='Column 2')
        .rename_axis(index=None, columns=None))
#          Age Name Number
#Feature 1   C    A      B
#Feature 2   F    D      E

或者,您可以根据DataFrame的长度将每三行分组在一起,并使用整数除法。

代码语言:javascript
复制
import numpy as np

df['index'] = np.char.add(['Feature '], (np.arange(len(df))//3+1).astype(str))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69741519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档