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循环,对每个变量重复整个过程,然后将结果连接在一起。