Можете ли вы иметь более одного фактора, способствующего изменению, разбивая ваш фрейм данных на две группы? pandas - PullRequest
1 голос
/ 28 марта 2020

Я работаю над количеством случаев смерти COVID-19 по штатам и выясняю, способствует ли высокий уровень населения в штате более высокой вероятности смерти от тех, кто поймал COVID-19.

В настоящее время я работаю над разделением моего фрейма данных на две группы, но, как я настрою, это разделение будет зависеть от двух факторов, а не только от одного - например. highpopulation_highdeath (это означает, что население штата больше, чем медиана, а уровень смертности больше, чем медиана), а другой группой будет highpopulation_lowdeath (население штата, которое больше медианы, а уровень смертности меньше, чем медиана). Текущий код приведен ниже, но я получаю неверную синтаксическую ошибку. Поэтому мне интересно, если вы не можете разделить фрейм данных на две группы на основе двух переменных?

Разделить набор данных deaths_to_case на две группы

highpop_highdeath = df.iloc[(df'StatePopulation' > 4342705.0), (df'deaths_to_cases' > 0.012143070253953211).values]
highpop_highdeath.name = 'States with a high population and high death rate'
highpop_lowdeath = df.iloc[(df'StatePopulation'> 4342705.0), (df'deaths_to_cases' <= 0.012143070253953211).values]
highpop_lowdeath.name = 'States with a high population and low death rate'

Ответы [ 3 ]

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

Вы хотите объединить два булевых вектора. Таким образом, для каждой позиции в кадре данных pandas будет оценивать оба оператора, и только если оба они верны, сохраняют данные.

highpop_highdeath = df.loc[(df'StatePopulation' > 4342705.0) & (df'deaths_to_cases' > 0.012143070253953211)]

ighpop_lowdeath = df.loc[(df'StatePopulation'> 4342705.0) & (df'deaths_to_cases' <= 0.012143070253953211)]

Еще более кратко:

highpop_highdeath_names = df.loc[(df'StatePopulation' > 4342705.0) & (df'deaths_to_cases' > 0.012143070253953211),'name']
0 голосов
/ 28 марта 2020

Да, вы можете иметь две переменные. Кстати, не могли бы вы поделиться сообщением об ошибке? Кроме того, попробуйте это:

highpop_highdeath = df.loc[(df['StatePopulation'] > 4342705.0) &  (df['deaths_to_cases'] > 0.012143070253953211)]
highpop_highdeath.name = 'States with a high population and high death rate'
highpop_lowdeath = df.loc[(df['StatePopulation']> 4342705.0) & (df['deaths_to_cases'] <= 0.012143070253953211)]
highpop_lowdeath.name = 'States with a high population and low death rate'
0 голосов
/ 28 марта 2020

Чтобы объединить несколько факторов в вашем фильтре, вам нужно использовать логический оператор & с каждым условием:

highpop_highdeath = df.loc[(df'StatePopulation' > 4342705.0) & (df'deaths_to_cases' > 0.012143070253953211), :]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...