根据列表Python数据框中引用的字符串创建列占总数的百分比

根据列表Python数据框中引用的字符串创建列占总数的百分比,python,pandas,list,dataframe,indexing,Python,Pandas,List,Dataframe,Indexing,我有一个dataframe,它本质上是一些索引,有一个数据透视表,列的值在1和0的行中。一列“总计”是给定行中1的总计。每个列名都是我引用的列表中项目的第一个索引。我想做的是为引用这些列的总列的百分比创建列,并提取第三个索引,这是一个表示世界上某个地区的字符串,如“美国”、“德国”等 数据框如下: Name Total Option1 Option2 Option3 Option4 Option5 Option6 Option7 Michael 4 1

我有一个dataframe,它本质上是一些索引,有一个数据透视表,列的值在1和0的行中。一列“总计”是给定行中1的总计。每个列名都是我引用的列表中项目的第一个索引。我想做的是为引用这些列的总列的百分比创建列,并提取第三个索引,这是一个表示世界上某个地区的字符串,如“美国”、“德国”等

数据框如下:

Name     Total  Option1  Option2  Option3  Option4  Option5  Option6  Option7
Michael   4       1        0        0        1        0        1        1
Gerry     2       1        0        0        0        0        0        1
为透视表数据帧引用的列表

ids = [('Option1', '37i9dQZF1DX0XUsuxWHRQd', 'United States'), 
('Option2', '37i9dQZF1DX2RxBh64BHjQ', 'Germany'), 
('Option3', '37i9dQZF1DX5hR0J49CmXC', 'Denmark'), 
('Option4', '37i9dQZF1DX8f6LHxMjnzD', 'Australia'), 
('Option5', '37i9dQZF1DWSOkubnsDCSS', 'United Kingdom'), 
('Option6', '37i9dQZF1DX0QKpU3cGsyb', 'United States'), 
('Option7', '37i9dQZF1DX60OAKjsWlA2', 'United States')]
预期产量

Name     Total  %United States  %Germany   %Denmark   %Australia  %United Kingdom  Option1  Option2  Option3  Option4  Option5  Option6  Option7
Michael   4         .75             0          0          .25            0            1        0        0        1        0        1        1
Gerry     2          1              0          0           0             0            1        0        0        0        0        0        1

您可以映射列和groupby:

# assuming that Name are unique
df = df.set_index('Name')

renamed = df.columns[1:].map(pd.DataFrame(ids).set_index(0)[2])

(df.iloc[:,1:].T
   .groupby(renamed).sum().T
   .div(df['Total'], axis=0)
   .assign(Total=df['Total'])
   .reset_index()
)
输出:

      Name  Australia  Denmark  Germany  United Kingdom  United States  Total
0  Michael       0.25      0.0      0.0             0.0           0.75      4
1    Gerry       0.00      0.0      0.0             0.0           1.00      2

到底是什么问题?你试过什么,做过什么研究吗?堆栈溢出不是免费的代码编写服务。见:。你甚至没有提供一个像样的。