Как я могу отключить или сложить кадр данных панды так, как я просил? - PullRequest
2 голосов
/ 21 ноября 2019

У меня есть датафрейм Python Pandas.

Например, вот мои данные:

   id   A_1   A_2   B_1   B_2
0  j2   1     5     10    8
1  j3   2     6     11    9
2  j4   3     7     12    10

Я хочу, чтобы это выглядело так:

   id   Other   A   B
0  j2   1       1   10
1  j2   2       5   8
2

Можетпожалуйста, помогите мне. Большое вам спасибо!

Ответы [ 2 ]

4 голосов
/ 21 ноября 2019

Использование wide_to_long с DataFrame.sort_values:

df = (pd.wide_to_long(df, ['A','B'], i='id', j='Other', sep='_')
        .sort_values('id')
        .reset_index())
print (df)
   id  Other  A   B
0  j2      1  1  10
1  j2      2  5   8
2  j3      1  2  11
3  j3      2  6   9
4  j4      1  3  12
5  j4      2  7  10
1 голос
/ 21 ноября 2019

Мы также можем использовать DataFrame.melt + Series.str.split для исполнения DataFrame.pivot_table:

df2=df.melt('id')
df2[['columns','Other']]=df2['variable'].str.split('_',expand=True)
new_df= ( df2.pivot_table(columns='columns',index=['id','Other'],values='value')
             .reset_index()
             .rename_axis(columns=None) )

print(new_df)
   id Other  A   B
0  j2     1  1  10
1  j2     2  5   8
2  j3     1  2  11
3  j3     2  6   9
4  j4     1  3  12
5  j4     2  7  10  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...