Python 透视数据帧以具有多索引列
我正在努力解决如何使数据帧具有多索引列的问题 我有这样一个数据帧:Python 透视数据帧以具有多索引列,python,pandas,pivot,multi-index,Python,Pandas,Pivot,Multi Index,我正在努力解决如何使数据帧具有多索引列的问题 我有这样一个数据帧: data = pd.DataFrame({"name":["a", "a", "b", "b", "b", "b", "c", "c"], "month":[1, 1, 2, 3, 1,
data = pd.DataFrame({"name":["a", "a", "b", "b", "b", "b", "c", "c"],
"month":[1, 1, 2, 3, 1, 1, 1, 3],
"buy_sell":["sell", "buy", "sell", "buy", "sell", "buy", "sell", "buy"],
"value":[10, 20, 30, 40, 20, 80, 50, 60]})
data
我想把它转换成一种广泛的格式。索引是name
,对于列,我想创建多个索引,将月份
和买入卖出
或者,如果不是多索引列,我希望旋转数据帧,使列具有足够的功能,例如sell_1
,buy_1
,sell_2
,buy_2
等
任何帮助都将不胜感激。谢谢大家! 您可以使用
设置索引()
和取消堆栈()
:
输出:
month 1 2 3
buy_sell sell buy sell buy
name
a 10.0 20.0 NaN NaN
b 20.0 80.0 30.0 40.0
c 50.0 NaN NaN 60.0
month 1 2 3
buy_sell buy sell buy sell buy sell
name
a 20.0 10.0 NaN NaN NaN NaN
b 80.0 20.0 NaN 30.0 40.0 NaN
c NaN 50.0 NaN NaN 60.0 NaN
如果您坚持让这些列包含所有NaN
,您可以取消堆叠
一次一个级别:
(data.set_index(['name','month','buy_sell'])['value']
.unstack('month').unstack('buy_sell')
)
输出:
month 1 2 3
buy_sell sell buy sell buy
name
a 10.0 20.0 NaN NaN
b 20.0 80.0 30.0 40.0
c 50.0 NaN NaN 60.0
month 1 2 3
buy_sell buy sell buy sell buy sell
name
a 20.0 10.0 NaN NaN NaN NaN
b 80.0 20.0 NaN 30.0 40.0 NaN
c NaN 50.0 NaN NaN 60.0 NaN
data.pivot('name',['month','buy\u sell','value')
。这将创建您的多索引列i getkeyrorm:'Level month not found'
…那么您的列就不是'month'
,但它可能有尾随空格,如'month'
,您需要执行data.columns
来查看您的实际名称columns@It_is_Chris您可能需要使用pivot\u表
而不是pivot
。谢谢!你的第二个答案正是我需要的:)