首先创建一个数据帧(使用随机数据):import pandas as pd

import numpy as np

from datetime import datetime, timedelta

ab = pd.DataFrame()

ab["subjectID"] = np.random.randint(5, size=200)#random list of "subjects" from 0 to 4

ab["day_number"] = np.random.randint(50, size=200)#random list of "dates" from 0 to 50

ab['real_date'] = ab.day_number.apply(lambda d: datetime(2018, 1, 1) + timedelta(days=d)) #to simulate real dates

ab["score1"] = np.random.randint(200, size=200)#meant to simulate one measurement from one subject

ab["score2"] = np.random.randint(400, size=200)#meant to simulate a second measurement

min_day = ab.real_date.min()

ab = ab.groupby(['subjectID', 'real_date']).sum() #because some subjects have more than 1 score each day

print(ab.head(10))

day_number score1 score2

subjectID real_date

0 2018-01-01 0 306 273

2018-01-04 3 32 60

2018-01-05 4 61 135

2018-01-08 21 477 393

2018-01-09 8 22 341

2018-01-10 9 137 30

2018-01-11 30 281 674

2018-01-14 13 183 396

2018-01-15 14 41 337

2018-01-16 15 83 50

然后用下一天的数据填充没有数据的天数:

^{pr2}$

4天的下一次重采样(分组依据):res = df.reset_index(level='subjectID').groupby('subjectID').resample('4D').first() #group by 4 days periods and keep only the first value

res = res.drop(columns='subjectID')

print(res.head(10))

day_number score1 score2

subjectID real_date

0 2018-01-01 0 306 273

2018-01-05 4 61 135

2018-01-09 8 22 341

2018-01-13 13 183 396

2018-01-17 18 91 46

2018-01-21 20 76 333

2018-01-25 48 131 212

2018-01-29 29 92 81

2018-02-02 32 172 55

2018-02-06 72 98 246

最后,当有超过4天的周期没有数据时,重新设置索引并处理情况:res = res.reset_index('real_date', drop=True) #the real_date has no meaning anymore

res['real_date'] = res.day_number.apply(lambda d: min_day + timedelta(days=d)) #good real_date based on the day_number

res = res.drop(columns='day_number')

res = res.set_index('real_date', append=True)

res = res.groupby(level=['subjectID', 'real_date']).first() #regroups periods with no data for more than 4 days

print(res.head(10))

score1 score2

subjectID real_date

0 2018-01-01 306 273

2018-01-05 61 135

2018-01-09 22 341

2018-01-14 183 396

2018-01-19 91 46

2018-01-21 76 333

2018-01-30 92 81

2018-02-02 172 55

2018-02-10 40 218

2018-02-15 110 112

这有点复杂,但我认为这是最好的办法。虽然我不知道效率如何,但似乎也没那么糟。在

python进行数据抽取_python中的数据抽取相关推荐

  1. python做mysql数据迁移_Python中MySQL数据迁移到MongoDB脚本的方法

    MongoDB简介 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库 ...

  2. python序列化和反序列化_Python 中 json 数据序列化和反序列化

    1.Json 定义 定义:JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.JSON 的数据格式其实就是 python 里面的字典格式,里 ...

  3. Python基础_第5章_Python中的数据序列

    Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...

  4. python怎么读取txt文件数据保存数组中-python将txt等文件中的数据读为numpy数组的方法...

    实际中,很多数据都是存为txt文件.csv文件等,但是在程序中处理的时候numpy数组或列表是最方便的.本文简单介绍读入txt文件以及将之转化为numpy数组或列表的方法. 1 将txt文件读为lis ...

  5. python导入txt文件并绘图-Python实现读取txt文件中的数据并绘制出图形操作示例

    本文实例讲述了Python实现读取txt文件中的数据并绘制出图形操作.分享给大家供大家参考,具体如下: 下面的是某一文本文件中的数据. 6.1101,17.592 5.5277,9.1302 8.51 ...

  6. python读txt文件 数组-python将txt等文件中的数据读为numpy数组的方法

    实际中,很多数据都是存为txt文件.csv文件等,但是在程序中处理的时候numpy数组或列表是最方便的.本文简单介绍读入txt文件以及将之转化为numpy数组或列表的方法. 1 将txt文件读为lis ...

  7. python 数据导入mysql_用python批量向数据库(MySQL)中导入数据

    用python批量向数据库(MySQL)中导入数据 现有数十万条数据,如下的经过打乱处理过的数据进行导入 数据库内部的表格的数据格式如下与下面的表格结构相同Current database: pyth ...

  8. python批量导入mysql_用python批量向数据库(MySQL)中导入数据

    用python批量向数据库(MySQL)中导入数据 现有数十万条数据,如下的经过打乱处理过的数据进行导入 数据库内部的表格的数据格式如下与下面的表格结构相同 Current database: pyt ...

  9. 系统的认识大数据人工智能数据分析中的数据

    今天,大量数据.信息充斥我的日常生活和工作中,仿佛生活在数据和信息的海洋中,各类信息严重影响了我们的生活,碎片.垃圾.过时信息耗费了我们宝贵时间,最后可留在我们大脑中的数据.信息和知识少之又少,如何提 ...

  10. java代码转置sql数据_SQL Server中的数据科学:数据分析和转换–使用SQL透视和转置

    java代码转置sql数据 In data science, understanding and preparing data is critical, such as the use of the ...

最新文章

  1. /etc/passwd文件小析
  2. SpringBoot 中添加jsp支持遇到的问题
  3. mysql 查找多组数据结构_MySql主要索引数据结构
  4. ORBSLAM的ORB特征到底从哪儿来?
  5. 购物车程序二(模拟了用户登录,限次数三次)
  6. java数组三种排序方式
  7. Mac下超级好用的5个顶级“实用”APP推荐
  8. 博世如何通过创新加速成功孵化出人工智能养虾初创公司?
  9. PC微信机器人之实战分析微信加人call
  10. 感谢同事的临别赠言,愿自己一路顺风。
  11. Tcache Attack
  12. vscode超炫敲击特效嘎嘎帅!!!
  13. 10秒钟解决TeamViewer商业用途 、5分钟后终止等问题
  14. python常用library
  15. 事务隔离级别与事务传播行为简介
  16. 年龄计算机在线计算适合你的对象,抖音年龄计算器恋爱对象生日,年龄计算器适合你的恋爱对象...
  17. python画图:小圆覆盖大圆问题
  18. Nero8 刻录数据到CD/DVD
  19. 企业管理新标杆:向对手学习
  20. 打造前端瑞士军刀,为你开发路上披荆斩棘

热门文章

  1. 华为Metn40有没有鸿蒙系统,华为matex2测评_华为matex2上手测评
  2. android自定义壁纸制作,如何为Android制作自己的自定义壁纸 | MOS86
  3. 从零开始学自然语言处理-十万字长文带你深入学习自然语言处理全流程
  4. dos 教程(很全的)
  5. 3dmax材质丢失插件_3dmax找丢失贴图的材质插件怎么用
  6. Linux下的tree的简单使用
  7. python 离线安装paramiko_离线安装 Python 2.7, paramiko 和 tornado
  8. flash遮罩弹性跟随效果
  9. 使用开源库libyuv中替换开源汇编接口,解决汇编接口中的崩溃问题
  10. 波特率、比特率和通信速率