我正在尝试摆脱JMP进行数据分析,但无法确定pandas中与JMP的Split Columns功能相当的函数。 我从以下DataFrame开始:
我可以使用
我尝试了
我也尝试了
任何建议?
In [1]: df = pd.DataFrame({'Level0': [0,0,0,0,0,0,1,1,1,1,1,1], 'Level1': [0,1,0,1,0,1,0,1,0,1,0,1], 'Vals': [1,3,2,4,1,6,7,5,3,3,2,8]})
In [2]: df
Out[2]:
Level0 Level1 Vals
0 0 0 1
1 0 1 3
2 0 0 2
3 0 1 4
4 0 0 1
5 0 1 6
6 1 0 7
7 1 1 5
8 1 0 3
9 1 1 3
10 1 0 2
11 1 1 8
我可以使用
pivot_table
函数处理JMP函数的一些输出场景,但是在Vals
列按照Level0
和Level1
的唯一组合进行拆分以得到以下输出的情况下,我遇到了困难:Level0 0 1
Level1 0 1 0 1
0 1 3 7 5
1 2 4 3 3
2 1 6 2 8
我尝试了
pd.pivot_table(df, values='Vals', columns=['Level0', 'Level1'])
,但这只给出了不同组合的平均值:Level0 Level1
0 0 1.333333
1 4.333333
1 0 4.000000
1 5.333333
我也尝试了
pd.pivot_table(df, values='Vals', index=df.index, columns=['Level0', 'Level1']
,它给我想要的列标题,但它不起作用,因为它强制输出与原始行数相同,所以输出有很多 NaN
值。Level0 0 1
Level1 0 1 0 1
0 1 NaN NaN NaN
1 NaN 3 NaN NaN
2 2 NaN NaN NaN
3 NaN 4 NaN NaN
4 1 NaN NaN NaN
5 NaN 6 NaN NaN
6 NaN NaN 7 NaN
7 NaN NaN NaN 5
8 NaN NaN 3 NaN
9 NaN NaN NaN 3
10 NaN NaN 2 NaN
11 NaN NaN NaN 8
任何建议?
aggfunc='first'
吗?我没有它的情况下得到了相同的答案。 - endangeredoxen