我有以下数据集:
名为:2,3,4 ... 9的列填充有彼此重叠的主题名称。网页浏览量是一个结果变量。
2 3 Pageviews
0 Financial Services Consumer Products 4106.0
1 Consumer Products ... 3368.0
2 Consumer Products ... 1025.0
3 Collaboration ... 7840.0
4 Future of Supply Chains ... 2076.0
我想将每个主题列(2,3,4,...)与
Pageviews
一起切片并附加它们,以便仅创建一个带有1个主题列和Pageviews
的数据框。我习惯在Stata中循环,您可以使用
x
在列名中循环,但是我知道与Pyhton完全不同。我开始
for x in range(2, 9):
df_x = df[['Pageviews', df.x]]
但Python无法识别
df.x
如何遍历列名?是否可以使用迭代器创建新的数据框?
谢谢!
编辑
我想要的输出是
Col Pageviews
0 Financial Services 4106.0
1 Consumer Products 3368.0
2 Consumer Products 1025.0
3 Collaboration 7840.0
4 Future of Supply Chains 2076.0
5 Future of Reporting 2123.0
6 Sustainability Management 15576.0
7 Human Rights 52.0
8 BSR News 903.0
9 Energy and Extractives 1232.0
10 HERproject 616.0
11 Sustainability Management 10697.0
其中col是附加第2、3、4 ...列的结果,而Pageviews是附加相应的Pageviews列的结果。
最佳答案
使用melt
df.melt('Pageviews').drop('variable',1)
Out[644]:
Pageviews value
0 1210 ConsumerProducts
1 1528 Collaboration
2 1716 FinancialServices
3 1403 Collaboration
4 1090 ConsumerProducts
5 1210 ConsumerProducts
6 1528 FutureofSupplyChains
7 1716 ConsumerProducts
8 1403 FinancialServices
9 1090 FutureofSupplyChains
10 1210 FinancialServices
11 1528 FinancialServices
12 1716 Collaboration
13 1403 FutureofSupplyChains
14 1090 FinancialServices