Как рассчитать режим по двум столбцам в фрейме данных Python? - PullRequest
0 голосов
/ 17 апреля 2019

В моем csv есть два столбца: FirstName и LastName. Мне нужно найти наиболее распространенное полное имя. Например:

FirstName      LastName  
A                 X  
A                 P  
A                 Y  
A                 Z                   
B                 X  
B                 Z  
C                 X  
C                 W  
C                 W  

Я пытался использовать функцию режима:

df["FirstName"].mode()[0]  
df["LastName"].mode()[0]  

Но он не будет работать над двумя столбцами

Режим каждого столбца:

Имя: A - встречается 4 раза
LastName: X - встречается 3 раза

Но на выходе должно быть "C W". Поскольку это полное имя, которое встречается в большинстве случаев.

Ответы [ 3 ]

2 голосов
/ 17 апреля 2019

Вы можете сделать,

(df['FirstName'] + df['LastName']).mode()[0]

# Output : 'CW'

Если вам действительно нужно пространство между именами и фамилиями, вы можете объединить '' вот так:

(df['FirstName'] + ' ' + df['LastName']).mode()[0]
# Output : 'C W'
1 голос
/ 17 апреля 2019

Вы можете объединить столбцы и найти режим,

df.apply(tuple, 1).mode()[0]

('C', 'W')
0 голосов
/ 17 апреля 2019

Вы можете объединить их в одну строку с помощью:

full_names = df.FirstName + df.LastName
full_names.mode()[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...