Создание нового фрейма данных pandas с условием if

#python #pandas #conditional-statements #iteration

Вопрос:

У меня есть база данных pandas о ценах на акции, также включающая дату. Теперь я попытался создать новый фрейм данных, включающий только значения определенного дня в месяц, и, если этот день не существует, использовать другой с условием if и elif.

Я использовал следующий код, но я получаю ошибку: «Ошибка значения: значение истинности кадра данных неоднозначно. Используйте.empty, a.bool(), a.item(), a.any() или a.all().»

 for i in month:
    if df[df['month']==i] and df[df['day']==5]:
        new_df=df.series
    elif df[df['month']==i] and df[df['day']==6]:
        new_df=df.series
 

Вы знаете, как это решить?
Уже спасибо за вашу помощь.

С наилучшими пожеланиями, Марвин

Комментарии:

1. Пожалуйста, добавьте пример и подробную информацию о проблеме, недостаточно ясную.

2. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы точно указать, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.

Ответ №1:

Использование этих данных :

     month   day
0   1       5
1   1       6
2   3       5
3   4       5
4   5       6
 

Тогда все, что вам нужно сделать :

 temp_df = df.loc[df["day"].isin([5, 6])]
temp_df = temp_df.drop_duplicates(["month"], keep="first")
temp_df

    month   day
0   1       5
2   3       5
3   4       5  
4   5       6
 

Если ваши данные не отсортированы, вы всегда можете использовать df.sort_values, чтобы это сработало.

Комментарии:

1. Я попробую это сделать. Спасибо за вашу помощь!!