我正在處理具有多列的大型資料集。它看起來類似于:
import pandas as pd
df = pd.DataFrame(
{'Country': ["NL", "NL", "NL", "BE", "BE", "BE"],
"Year": [2010, 2011, 2012, 2010, 2011, 2012],
"Monkeys": [1, 4, 5, 2, 5, 4],
"Giraffes": [40, 50, 60, 20, 30, 35],
"Pigs": [10, 15, 20, 30, 35, 40]
})
看起來像這樣:
Country Year Monkeys Giraffes Pigs
0 NL 2010 1 40 10
1 NL 2011 4 50 15
2 NL 2012 5 60 20
3 BE 2010 2 20 30
4 BE 2011 5 30 35
5 BE 2012 4 35 40
我希望它看起來像這樣:
Animals Country 2010 2011 2012
0 Monkeys NL 1 4 5
1 Giraffes NL 40 50 60
2 Pigs NL 10 15 20
3 Monkeys BE 2 5 4
4 Giraffes BE 20 30 35
5 Pigs BE 30 35 40
使用 pivot_table 和 pivot 方法我一直無法讓它作業。有沒有人可以幫我解決這個問題?
uj5u.com熱心網友回復:
首先使用DataFrame.set_indexforMultiindex和 reshape by DataFrame.unstack,然后使用Series.unstack:
df = (df.set_index(['Country','Year'])
.rename_axis('Animals', axis=1)
.unstack([0,1])
.unstack()
.reset_index()
.rename_axis(None, axis=1))
print (df)
Animals Country 2010 2011 2012
0 Monkeys BE 2 5 4
1 Monkeys NL 1 4 5
2 Giraffes BE 20 30 35
3 Giraffes NL 40 50 60
4 Pigs BE 30 35 40
5 Pigs NL 10 15 20
uj5u.com熱心網友回復:
的組合melt和pivot應該足夠了:
(df.melt(id_vars = ['Country', 'Year'], var_name='Animals')
.pivot(index=['Animals', 'Country'], columns='Year', values = 'value')
.reset_index()
.rename_axis(columns=None)
)
Animals Country 2010 2011 2012
0 Giraffes BE 20 30 35
1 Giraffes NL 40 50 60
2 Monkeys BE 2 5 4
3 Monkeys NL 1 4 5
4 Pigs BE 30 35 40
5 Pigs NL 10 15 20
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/357475.html
