Объедините 3 взаимоисключающих столбца в наборе данных для Python - PullRequest
1 голос
/ 17 марта 2020

Привет, ребята, доброе утро,

Это мое самое первое сообщение здесь, и, пожалуйста, учтите, что я новичок в Python. Мне дали набор данных, в котором у меня есть 3 взаимоисключающих столбца, таких как следующий пример:

ID  White   Black   Red

1    Yes     No     No

2     No    Yes     No

3     No     No     Yes

4     No    Yes     No

В результате я хотел бы получить:

ID  Color

1    White

2    Black  

3    Red

4    Black    

I не нашел окончательного решения по этому вопросу, несмотря на мои исследования на сайте Stack. Кто-нибудь готов предложить способ? Спасибо PS: извините за форматирование сообщения .. !!

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

Ключ здесь stack, если вы замените No значения на NaN, которые будут игнорироваться стеком:

df[df == 'No'] = np.NaN
resul = df.set_index('ID').stack().reset_index().drop(columns=0).rename(
                   columns={'level_1': 'Color'})

Это дает ожидаемый результат:

   ID  Color
0   1  White
1   2  Black
2   3    Red
3   4  Black
0 голосов
/ 17 марта 2020

Попробуйте это:

import pandas as pd

df = pd.read_csv('data.csv', index_col='ID')

cols = df.columns

def get_color(row):
    for col in cols:
        if row[col] == 'Yes':
            return col

df['Color'] = df.apply(get_color, axis=1)

print(df[['Color']])
    Color
ID       
1   White
2   Black
3     Red
4   Black
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...