#pandas
#pandas
Вопрос:
У меня есть фрейм данных с видами и их встречаемостью. Далее следует выдержка:
------------- ------------ ------------------------------------------- -------------- ----------------- ------------- ----------- ------------ ----------
| Family | Genus | Species | Species code | Nearctic Mexico | Mesoamerica | Caribbean | Los Llanos | Amazonia |
------------- ------------ ------------------------------------------- -------------- ----------------- ------------- ----------- ------------ ----------
| Acanthaceae | Aphelandra | Aphelandra castaneifolia Britton ex Rusby | Aphecast | | | | | |
------------- ------------ ------------------------------------------- -------------- ----------------- ------------- ----------- ------------ ----------
| Acanthaceae | Aphelandra | Aphelandra pilosa Leonard | Aphpilo | | | | | |
------------- ------------ ------------------------------------------- -------------- ----------------- ------------- ----------- ------------ ----------
| Acanthaceae | Aphelandra | Aphelandra pulcherrima (Jacq.) Kunth | Aphepulc | | | | | |
------------- ------------ ------------------------------------------- -------------- ----------------- ------------- ----------- ------------ ----------
| Acanthaceae | Aphelandra | Aphelandra sinclairiana Nees | Aphesinc | | | | | |
------------- ------------ ------------------------------------------- -------------- ----------------- ------------- ----------- ------------ ----------
Мне нужно анализировать только роды, но сохранять их вхождения следующим образом. Извините, если это настоящий вопрос новичка, но мне трудно выразить словами, что я намерен делать. Это ожидаемый результат:
------------- ------------ ----------------- ------------- ----------- ------------ ----------
| Family | Genus | Nearctic Mexico | Mesoamerica | Caribbean | Los Llanos | Amazonia |
------------- ------------ ----------------- ------------- ----------- ------------ ----------
| Acanthaceae | Aphelandra | | | | | |
------------- ------------ ----------------- ------------- ----------- ------------ ----------
Я обнаружил похожие проблемы, но имел дело с числовыми данными, и мне не удалось адаптировать решение.
Комментарии:
1. Вам нужен строковый эквивалент «max» столбцов местоположения? Итак, если где-нибудь есть плюс для этого рода, тогда дайте ему плюс?
Ответ №1:
Использовать GroupBy.first
для первых значений, не являющихся ошибочными, для 5 столбцов:
#if necessary replace empty space to missing values
df = df.replace('',np.nan)
cols = df.columns[4:].tolist()
df = df.groupby(['Family','Genus'], as_index=False)[cols].first()
print (df)
Family Genus Nearctic Mexico Mesoamerica Caribbean Los Llanos
0 Acanthaceae Aphelandra NaN
Amazonia
0