Python 如何在整个数据帧中扩展列中的变量标签

Python 如何在整个数据帧中扩展列中的变量标签,python,pandas,group-by,Python,Pandas,Group By,我有数据,我希望在整个数据集中扩展性别和年龄组。以下是当前数据的外观,以及理想情况下的外观: 当前: gender variable age 1 18-24 variabl1 0.6 variable2 0.3 25-39 variable1 0.1 variable2 0.3 40-50 variable1 0.1 variable2 0.30 2 18-24 v

我有数据,我希望在整个数据集中扩展性别和年龄组。以下是当前数据的外观,以及理想情况下的外观:

当前:

gender  variable   age  
1       
    18-24 variabl1  0.6
          variable2 0.3
    25-39 variable1 0.1
          variable2 0.3
    40-50 variable1 0.1
          variable2 0.30
2       
    18-24 variabl1  0.6
          variable2 0.3
    25-39 variable1 0.1
          variable2 0.3
    40-50 variable1 0.1
          variable2 0.30
注意:我不想更改数据帧的物理结构(即重新排列列和行)

我在谷歌上搜索了不少,但不幸的是,我没有发现任何有用的东西

为了达到我目前的状态,我只需完成一个雄性和雌性的替换,然后是一个groupby:

data['gender'].replace(['Male', 'Female'],[1,2], inplace=True)
df = data.groupby(['gender', 'age'])["variable"].value_counts(normalize=True)
理想的:

   gender   variable   age  
    1       
    1   18-24 variabl1  0.6
    1   18-24 variable2 0.3
    1   25-39 variable1 0.1
    1   25-39 variable2 0.3
    1   40-50 variable1 0.1
    1   40-50 variable2 0.30
    2       
    2   18-24 variabl1  0.6
    2   18-24 variable2 0.3
    2   25-39 variable1 0.1
    2   25-39 variable2 0.3
    2   40-50 variable1 0.1
    2   40-50 variable2 0.30

我相信这会奏效的。问题是重置索引时存在名称冲突。您需要将number的列重命名为其他列。我在这里把它改名为“value”

df.rename('value').reset_index()

    gender      age talent_prompted__Johnny     value
0        1  "18-24"              response 1  0.621622
1        1  "18-24"           I do not know  0.216216
2        1  "18-24"              response 5  0.081081
3        1  "18-24"              response 2  0.027027
4        1  "18-24"              response 4  0.027027
..     ...      ...                     ...       ...
74       2  "50-54"              response 2  0.027027
75       2  "50-54"              response 5  0.027027
76       2  "55-59"              response 1  0.694444
77       2  "55-59"           I do not know  0.194444
78       2  "55-59"              response 7  0.111111

[79 rows x 4 columns]

@对不起,我对熊猫和蟒蛇还不熟悉。你能用一个例子来详细说明吗?我得到了一个错误——“ValueError:无法插入‘variable’,已经存在”这个错误在我编辑了上面的代码之后是否更有意义?AttributeError回溯(最近一次调用最后一次)在-->1 df.head()到_dic()~\AppData\Local\Continuum\anaconda3\lib\site packages\pandas\core\generic.py in\uuuuu getattr\uuuu(self,name)5065 if self.\u info\u axis.\u可以\u保存\u标识符\u和\u保存\u名称(name):5066返回self[name]->5067返回对象。\uuuuuu getattribute\uuuuu(self,name)5068 5069 def\uu设置属性\uuuu(self,name,value):AttributeError:“Series”对象没有属性“to_dic”您可以从原始数据添加可复制的示例,以便我们可以复制您的问题吗?此外,不确定是否必须创建一个全新的线程,但如果我想在原始分析中包含第二列,我将如何操作??它会包括在这一行吗??(也就是说,想要包括‘天赋提示’和‘辛迪’)df=data.groupby([‘性别’、‘年龄’)[‘天赋提示’和‘约翰尼’)。value\u counts(normalize=True)我不认为有一种简单的方法可以同时处理多个变量。您可能希望编写一个for循环,对每个变量重复整个过程,然后将结果连接在一起。