#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. Я попробую это сделать. Спасибо за вашу помощь!!