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

У меня есть dtaframe, который выглядит следующим образом:

import pandas as pd
import numpy as np
df = pd.DataFrame({'ID': [332, 332, 332, 315, 315, 315, 315, 315, 310, 310], \
                    'Name': ['Alex', 'Alex', 'Alex', 'Sara', 'Sara', 'Sara', 'Sara', 'Sara', 'Franck','Franck'], \
                    'Shift': ['Day', 'Day', 'Night', 'Day', 'Night', 'Night', 'Day', 'Day', 'Night', 'Night']})
df

Output
    ID  Name    Shift
0   332 Alex    Day
1   332 Alex    Day
2   332 Alex    Night
3   315 Sara    Day
4   315 Sara    Night
5   315 Sara    Night
6   315 Sara    Day
7   315 Sara    Day
8   310 Franck  Night
9   310 Franck  Night

И я хочу добавить новый столбец, подобный этому:

    ID  Name    Shift   Two_Shift
0   332 Alex    Day     Yes
1   332 Alex    Day     Yes
2   332 Alex    Night   Yes
3   315 Sara    Day     Yes
4   315 Sara    Night   Yes
5   315 Sara    Night   Yes
6   315 Sara    Day     Yes
7   315 Sara    Day     Yes
8   310 Franck  Night   No
9   310 Franck  Night   No

Для этого я попробовал этот код:

df['Two_Shift'] = np.where((df['ID'] == df['ID']) & (df['Shift'] != df['Shift']), 'Yes', 'No')

но это не работает.

Спасибо!

Ответы [ 2 ]

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

Использование transform nunique с map

df.groupby('ID').Shift.transform('nunique').eq(2).map({True:'Yes',False:'No'})
Out[296]: 
0    Yes
1    Yes
2    Yes
3    Yes
4    Yes
5    Yes
6    Yes
7    Yes
8     No
9     No
Name: Shift, dtype: object
0 голосов
/ 12 июня 2018

IIUC:

df['Two_Shift'] = np.where(df.groupby('ID')['Shift'].transform('nunique') == 2,'Yes','No')

Выход:

    ID    Name  Shift Two_Shift
0  332    Alex    Day       Yes
1  332    Alex    Day       Yes
2  332    Alex  Night       Yes
3  315    Sara    Day       Yes
4  315    Sara  Night       Yes
5  315    Sara  Night       Yes
6  315    Sara    Day       Yes
7  315    Sara    Day       Yes
8  310  Franck  Night        No
9  310  Franck  Night        No
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...