посмотрите на строку информационного кадра и верните результат (x), если большинство элементов в строке также x - PullRequest
1 голос
/ 28 сентября 2019

Сначала скопируйте / вставьте и запустите мой код ниже, затем прочитайте следующее:

Я пытаюсь найти способ создать новый столбец (т.е. df['F']), который возвращает BHD, если BHD происходит ната же строка 3 или более 5 раз и то же самое для СХД, который также должен возвращаться в том же столбце, что и BHD (все результаты должны быть в 1 столбце)

Я добавил столбец F для шаблонаответ мне требуется

import pandas as pd

df = pd.DataFrame()

df['A'] = ('S', 'SCL', 'SHD', 'SHD', 'SL', 'S', 'S', 'BCL', 'BHD', 'BHD', 'BHD', 'BHD', 'BHD','B','S')

df['B'] = ('SCL', 'SHD', 'SHD', 'SHD', 'SL', 'S', 'S','BCL', 'BHD', 'BHD', 'BHD', 'BHD', 'BHD', 'BHD','B')

df['C'] = ('BCL', 'BHD', 'BHD', 'BHD', 'BHD', 'BHD', 'BHD','B','S','SCL', 'SHD', 'SHD', 'SHD', 'SL', 'S')

df['D'] = ('BCL', 'B', 'SCL', 'SHD', 'SL', 'SCL', 'SHD', 'SL','S','SCL', 'SHD', 'SHD', 'SHD', 'SL', 'S')

df['E'] = ('SL','BCL', 'BHD', 'BHD', 'BHD', 'BHD', 'BHD', 'BHD', 'BHD', 'B','SCL', 'SHD', 'SHD', 'SHD', 'SL')

df['F'] = ('0','0','0', 'SHD','0','0','0','0', 'BHD','0','0', 'SHD', 'SHD', '0', '0')


print(df)

1 Ответ

2 голосов
/ 28 сентября 2019

Вы можете сделать это, используя что-то вроде:

import pandas as pd
import numpy as np
df['F'] = np.select([df.eq('BHD').sum(axis=1).ge(3),
                     df.eq('SHD').sum(axis=1).ge(3)],
                    ['BHD', 'SHD'], default='0')

eq('BHD') - возвращает фрейм данных, содержащий логические значения: True, если строка BHD и False в противном случае.

sum(axis=1) - Суммирует True s по строкам и получает количество раз, когда строка встречается в определенной строке

ge(3) - ge означает «больше»чем или равно '- Возвращает True, если число отсчетов больше или равно 3

np.select - Это заменяет случаи, когда вы получаете «СХД» три или более раз на «СХД»и то же самое для «BHD».Когда они оба False, он возвращает значение по умолчанию '0'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...