如何统计df1的Date列中存在于df2的Date列的值数量
解决方法
要统计df1的Date列中同时存在于df2的Date列中的值的数量(非唯一值计数),可以用以下两种实用方法实现:
方法一:Pandas自带的isin()方法(简洁直观)
先构造与你提供的数据一致的示例DataFrame:
import pandas as pd df1 = pd.DataFrame({ 'Date': ['2016-03-21 20:10:00', '2016-03-22 21:09:00', '2016-05-03 17:05:00'] }) df2 = pd.DataFrame({ 'Date': ['2016-03-21 20:10:00', '2016-03-21 21:00:00', '2016-03-22 21:09:00', '2016-05-03 17:05:00', '2017-06-01 16:10:00'] })
执行统计:
# 判断df1每个Date是否在df2中,求和得到符合条件的数量 match_count = df1['Date'].isin(df2['Date']).sum() print(match_count) # 输出:3
原理:isin()返回布尔Series,每个元素对应df1的Date值是否存在于df2的Date列;sum()将布尔值转为1(True)和0(False),求和后就是符合条件的总数量。如果df1中有重复的Date值,只要该值在df2中存在,重复次数也会被计入统计。
方法二:利用集合查找(大数据量更高效)
如果数据集规模较大,集合的查找效率更高(时间复杂度O(1)),可以用以下方式:
# 将df2的Date列转为集合 df2_dates = set(df2['Date']) # 遍历df1的Date,统计存在于集合中的数量 match_count = sum(1 for date in df1['Date'] if date in df2_dates) print(match_count) # 输出:3
内容的提问来源于stack exchange,提问作者monica
相关产品推荐
相关产品推荐

