Я пытаюсь освободить себя от JMP для анализа данных, но не могу определить эквивалент панды функции JMP Split Columns. Я начинаю со следующей DataFrame:pandas 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
Я могу справиться с некоторыми из выходных сценариев функции JMP, используя функцию pivot_table
, но я озадачен на случай, когда 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
Любые предложения?
Спасибо ayhan. Прекрасно работает. Действительно ли нужен 'aggfunc = 'first''? Я получаю тот же ответ без него. – endangeredoxen
@endangeredoxen Значение по умолчанию - «среднее» для aggfunc. Поскольку существует одно значение, это на самом деле не имеет значения. средний, мин, макс, первый или последний, любой из них будет делать. – ayhan