Как проверить и посчитать, существует ли значение dataframe one в другом фрейме данных?

#python #pandas #dataframe #countif

#python #pandas #фрейм данных #countif

Вопрос:

У меня есть 2 фрейма данных, добавленных с помощью pd.read_csv. Я создаю фрейм данных следующим образом:

 df1= pd.read_csv('exo.csv', delimiter=';', encoding='latin1', parse_dates=['date'], dayfirst=True)
  

двумя именами данных являются:`

 df1:
    date     number
  jan-16 
  feb-17
  march-17 
  april-17

Df2:
   date     
  09/01/2016
  08/02/2017
  15/02/2017
  13/03/2017 
  25/08/2017

  

Я хотел бы проверить, существует ли значение df1.date в df2.value. Если да, то столбец df1[‘number’] будет подсчитывать количество появлений. Тогда результат Df1 должен быть примерно таким:

 date     number
jan-16     1
feb-17     2  (=> for instance, feb-17 has found 2 times in Df2['date'])
  

Как я могу это сделать? нужно ли мне изменить формат даты ?

Я заранее благодарю вас,

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

1. 16 февраля не появляется дважды во 2-м фрейме данных, 17 февраля есть.

Ответ №1:

вам нужно сгруппировать по df2.date, а затем сосчитать 2, после чего вы сможете объединить df df2 в df1 с помощью ‘date1’

 df2['date2'] = pd.to_datetime(df2['date'],format='%d/%m/%Y')
df2['date1'] = df2.date2.dt.strftime('%b-%y').astype(str).str.lower()
b = pd.DataFrame(df2.groupby('date1')['date'].count())
b.columns = ['number']
b = b.reset_index()
  

затем объединить

 df1['date']=df1.date.str.lower()
df1.merge(b,right_on='date1' , left_on='date',how='left')