Преобразовать фрейм данных в пандах - PullRequest
0 голосов
/ 07 июня 2018

Предположим, у меня есть фрейм данных:

x1  x2  value_x1    value_x2
a   b   1           2       
a   c   3           4
b   c   5           6

Могу ли я получить следующий фрейм данных?

a   b   c
1   2   0
3   0   4
0   5   6

Я пробовал pivot_table и плавился, но результат не подходит.

Спасибо.

1 Ответ

0 голосов
/ 07 июня 2018

Используйте wide_to_long:

df = pd.wide_to_long(df.reset_index(), stubnames=['x', 'value_x'], i='index', j='a')

print (df)
         x  value_x
index a            
0     1  a        1
1     1  a        3
2     1  b        5
0     2  b        2
1     2  c        4
2     2  c        6

А затем unstack с некоторой очисткой данных:

df = (df.reset_index(level=1, drop=True)
        .set_index('x', append=True)['value_x']
        .unstack(fill_value=0)
        .rename_axis(None)
        .rename_axis(None, axis=1))
print (df)
   a  b  c
0  1  2  0
1  3  0  4
2  0  5  6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...