当前位置: 首页 > 知识库问答 >
问题:

如何将列更改为行[重复]

司寇凯
2023-03-14

我有这个数据框:

Name  type1  type2  type3  ...  typeN  color

John  8.7  0  NA  ...  56  blue

Andy  45  34  9.7  ...  NA  yellow

我需要把它变成这样:

color  typeName  Name  value
blue  type1  John  8.7
blue  type2  John  0
blue  type3  John  NA
.
.
.
blue  typeN  John  56
yellow  type1  Andy  45
yellow  type2  Andy  34
yellow  type3  Andy  9.7
.
.
.
yellow  typeN  Andy  NA

我有点不知道该怎么做,请帮忙好吗?

共有2个答案

魏翔
2023-03-14
pd.melt(df, id_vars=['Name', 'color'], var_name='typeName')
    Name    color   typeName    value
0   John    blue    type1       8.7
1   Andy    yellow  type1       45.0
2   John    blue    type2       0.0
3   Andy    yellow  type2       34.0
4   John    blue    type3       NaN
5   Andy    yellow  type3       9.7
6   John    blue    typeN       56.0
7   Andy    yellow  typeN       NaN


汪阿苏
2023-03-14

这与数据重塑有关。请参阅下面使用stack(熔化替代品)的工作流程,

样本数据

df=pd.DataFrame({'Name':['John','Andy'], 'type1':[8.7,45],'type2':[0,34], 'color':['blue','yellow']})
result = df.set_index(['Name','color'])
           .rename_axis('typeName',axis=1)
           .stack(dropna=False)
           .reset_index(name='value')

输出

    Name    color   typeName    value
0   John    blue    type1   8.7
1   John    blue    type2   0.0
2   Andy    yellow  type1   45.0
3   Andy    yellow  type2   34.0
 类似资料:
  • 我画了一个计数图如下: (数组([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]),) 但我想将xticks更改为仅显示这4个数字,因此我检查了文档并按如下方式重新编码: 但是xticks不是我想要的<我搜索了相关的问题

  • 如何将“”更改为“”?我需要使用sqlalchemy中的数据编写database.json 数据是我数据库的名字 但我的输出是这样的: 它应该是这样的:

  • 如果我想将一个名为“maximum_num”的新列突变到x上,其值为5.1,4.9,4.7等,我该怎么做?(我意识到糟糕的例子,因为这里都是Sepal.Length,但如果最大值每次来自不同的cols) 我想我可以用which.max但不知道如何编织。 我也试过 如何追加包含最大行值的新列? 有dplyr esque的方式吗?对base r也很满意。

  • 我有一张如下的桌子: 如何将其转换为:

  • 问题内容: 我想将表列更改为可为空。我用过了: 这会导致出现错误。正确的语法是什么? 问题答案: 假设(基于您之前的问题): 用您的实际数据类型替换。

  • 问题内容: 我试图在事实发生后修改表使其成为主键列。我尝试了以下SQL,但收到语法错误通知。 我做错什么了吗? 问题答案: