python中的流线型列

python中的流线型列,python,pandas,Python,Pandas,我花了几周的时间来建造以下建筑: 我的数据帧如下所示: 我想构建以下内容: 我尝试了以下方法,但不起作用: formatted_df = pd.melt(dfNull, ["registro"], var_name="Atributo", value_name="Valor") 尝试指定id\u vars和值\u vars >>> df = pd.DataFr

我花了几周的时间来建造以下建筑:

我的数据帧如下所示:

我想构建以下内容:

我尝试了以下方法,但不起作用:

formatted_df = pd.melt(dfNull,
                   ["registro"],
                   var_name="Atributo",
                   value_name="Valor")

尝试指定
id\u vars
值\u vars

>>> df = pd.DataFrame({'ID':range(5),'A':range(0,5),'B':['Z','Y','X','W','V']})
>>> df
   ID  A  B
0   0  0  Z
1   1  1  Y
2   2  2  X
3   3  3  W
4   4  4  V
>>> df.melt(id_vars=['ID'], value_vars=['A','B'], var_name='var_name', value_name='val_name')
   ID var_name val_name
0   0        A     0
1   1        A     1
2   2        A     2
3   3        A     3
4   4        A     4
5   0        B     Z
6   1        B     Y
7   2        B     X
8   3        B     W
9   4        B     V
搜索pandas.melt链接,未找到dfNull选项 我发现了一个类似的代码:

formatted_df = pd.melt(df,["religion"],var_name="income",value_name="freq")
formatted_df = formatted_df.sort_values(by=["religion"])
formatted_df.head(10)
基于此链接

尝试以这种方式格式化代码,看看从“dfNull”到“df”的更改是否有效


我认为您的问题是“Registro”在数据帧中大写,但在melt命令中没有大写

这似乎有效:

df = pd.DataFrame({'Registro': [1, 2, 3], 
                   '100 mucho actividad': [None, None, 1],
                   '120 mil conformar': [1, 1, None],
                   '190 solo recibir': [1, 1, 1]})
这将生成以下数据帧:

            Registro    100 mucho actividad 120 mil conformar    190 solo recibir
0                  1                    NaN               1.0                   1
1                  2                    NaN               1.0                   1
2                  3                    1.0               NaN                   1
现在我们可以melt(我使用“Registro”作为新数据帧的索引)还需要注意的是,我删除了产生结果的NaN列,并对索引进行排序,使其符合您期望的顺序

formatted_df = pd.melt(df,
                       ["Registro"],
                       var_name="Atributo",
                       value_name="Valor").dropna().set_index('Registro')

formatted_df.sort_index(inplace=True)

formatted_df
结果:

                       Atributo     Valor
Registro        
       1      120 mil conformar     1.0
       1       190 solo recibir     1.0
       2      120 mil conformar     1.0
       2       190 solo recibir     1.0
       3    100 mucho actividad     1.0
       3       190 solo recibir     1.0

请将您的数据添加为文本,以便我们可以复制和粘贴。请勿张贴代码/数据的图片。请在使用前检查标签的说明,在这种情况下,不必进行整理
                       Atributo     Valor
Registro        
       1      120 mil conformar     1.0
       1       190 solo recibir     1.0
       2      120 mil conformar     1.0
       2       190 solo recibir     1.0
       3    100 mucho actividad     1.0
       3       190 solo recibir     1.0