Как изменить структуру данных, сохраняя уникальную информацию? - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть фрейм данных df1, который содержит информацию о взаимодействиях между агентами и их статусом.

df1
     Name1   Name2  Name1_x Y_x Name1_y Y_y
0    Jack    John   Jack     0  John     1
1    Sarah   Jack   Sarah    0  Jack     0
2    Sarah   Eva    Sarah    0  Eva      1
3    Eva     Tom    Eva      1  Tom      0
4    Eva     John   Eva      1  John     1

Я хотел бы иметь фрейм данных с именем и статусом y, например

df2
     Name   Y
0    Eva    1
1    John   1
2    Tom    0
3    Sarah  0
4    Jack   0

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Если я правильно понимаю, самый краткий способ достижения вашего результата, который я могу придумать, заключается в следующем:

df2 = pd.DataFrame(df1.loc[:, 'Name1_x':].values.reshape(-1, 2), columns=['Name', 'Y']).drop_duplicates()

Это производит

    Name  Y
0   Jack  0
1   John  1
2  Sarah  0
5    Eva  1
7    Tom  0

, который вы можете отсортировать с помощью

df2 = df2.sort_values(by=['Y', 'Name'], ascending=[False, True]).reset_index(drop=True)                                                                                                

так, что конечный результат будет

    Name  Y
0    Eva  1
1   John  1
2   Jack  0
3  Sarah  0
4    Tom  0

(я не знаю, почему Джек появляется последним в вашем ожидаемом результате, я предполагаю опечатку или что это не имеет значения.)

0 голосов
/ 15 ноября 2018

Вы можете использовать:

df2 = pd.DataFrame(np.r_[df1.iloc[:,2:4], df1.iloc[:,4:6]], columns=['Name', 'Y']).drop_duplicates().reset_index(drop=True)

Выход:

    Name  Y
0   Jack  0
1  Sarah  0
2    Eva  1
3   John  1
4    Tom  0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...