如何检查和计数一个数据框的值是否存在于其他数据框中?

时间:2019-04-24 12:52:03

标签: python pandas dataframe countif

我有2个数据帧,并添加了pd.read_csv。我这样创建数据框:

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

这2个数据帧是:`

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

我想检查df2.value中是否存在df1.date的值。如果是,则df1 ['number']列将计算出现次数。 Df1的结果应如下所示:

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

我该怎么做?我需要更改日期格式吗?

我先谢谢你

1 个答案:

答案 0 :(得分:0)

您需要按df2.date分组,然后计算2 比您可以在'date1'之前将df df2合并到df1

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')