【pandas】利用merge实现百倍加速

在数据可视化中,为非连续数据集每七天取一个采样点,需要找到最近的数据作为当天的代表。原算法通过生成目标时间序列并映射到数据集,然后使用pd.concat合并,处理大数据集耗时较长。通过将映射转换为dataframe并与原始数据集merge,减少了高频次的dataframe合并,将运行时间从十多分钟降低到5秒左右,显著提升了性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于非连续数据集,数据可视化时候需要每七天一个采样点。要求是选择此前最新的数据作为当日的数据展示,譬如今天是2019-06-18,而数据集里只有2019-06-15,那就用2019-06-15的数据作为2019-06-18的数据去描点。
每七天一个采样点,会使得每天展示所选的数据都会有所不同。当时间往后推移一天,日期为2019-06-19,那么最新数据点从2019-06-19开始,第二个就是2019-06-12。这里就需要一个算法来快速的根据当前日期去选出(填充)一系列数据供数据可视化之用。
一个非常直接的实现方法:

  1. 先生成一串目标时间序列,从某个开始日到今天为止,每七天一个日期。
  2. 把这些日期map到数据集的日期, Eg. {“2019-06-18”:“2019-06-15”…} 。
  3. 把map到的数据抽出来用pd.concat接起来。
    代码如下:
target_dates = pd.date_range(end=now, periods=100, freq="7D")
full_dates = pd.date_range(start, now).tolist()
org_dates = df.date.tolist()</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值