迭代 pandas 数据框,检查值并创建其中的一些值

2024-07-03

好的,我有一个(大)数据框,如下所示:

         date       time      value
0     20100201         0         1
1     20100201         6         2
2     20100201        12         3
3     20100201        18         4
4     20100202         0         5
5     20100202         6         6
6     20100202        12         7
7     20100202        18         8
8     20100203         0         9
9     20100203        18        11
10    20100204         6        12
...
8845  20160101        18      8846  

如您所见,数据框有一列date,一列time每天四个小时(00、06、12、18)和一栏value.

问题是数据框中缺少日期,在上面的示例中,第 8 行和第 9 行之间应该有两行,对应于小时6 and 12当日的20100203,以及第 9 行和第 10 行之间对应于小时的额外行0当日的20100204.

我需要什么?我想重复一下date数据框的列,检查每一天都存在并且没有人丢失,并且每天都有四个小时(00,06,12,18)。如果迭代期间缺少某些内容,则应添加exactly那个地方,失踪的人date and time and NaN作为一个值。为了不再次复制所有数据框,让我把最终版本中应该出现的相关方面放在一起:

...
7     20100202        18         8
8     20100203         0         9
9     20100203         6       NaN
10    20100203        12       NaN   
11    20100203        18        11
12    20100204         0       NaN
13    20100204         6        12
...

如果您有兴趣,这里提出了这个问题的更简单版本python 中的模块化算法迭代 pandas 数据帧 https://stackoverflow.com/questions/37328504/modular-arithmetic-in-python-to-iterate-a-pandas-dataframe并得到了用户@Alexander 和@piRSquared 的热情解答。这里要求的版本是一个更困难的版本,涉及(我认为)datetime 和 timedelta 的使用以及迭代更多列。

抱歉发了这么长的帖子,非常感谢。


您可以使用pivot http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.pivot.html重塑 - 你得到NaN按列缺失值time, then unstack http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.unstack.html with reset_index http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.reset_index.html and sort_values http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort_values.html:

import pandas as pd

df = pd.DataFrame({'date': {0: 20100201, 1: 20100201, 2: 20100201, 3: 20100201, 4: 20100202, 5: 20100202, 6: 20100202, 7: 20100202, 8: 20100203, 9: 20100203, 10: 20100204}, 
                   'time': {0: 0, 1: 6, 2: 12, 3: 18, 4: 0, 5: 6, 6: 12, 7: 18, 8: 0, 9: 18, 10: 6},
                   'value': {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 11, 10: 12}})

print (df)
        date  time  value
0   20100201     0      1
1   20100201     6      2
2   20100201    12      3
3   20100201    18      4
4   20100202     0      5
5   20100202     6      6
6   20100202    12      7
7   20100202    18      8
8   20100203     0      9
9   20100203    18     11
10  20100204     6     12
print (df.pivot(index='date', columns='time', values='value')
         .unstack()
         .reset_index(name='value')
         .sort_values('date'))

    time      date  value
0      0  20100201    1.0
4      6  20100201    2.0
8     12  20100201    3.0
12    18  20100201    4.0
1      0  20100202    5.0
5      6  20100202    6.0
9     12  20100202    7.0
13    18  20100202    8.0
2      0  20100203    9.0
6      6  20100203    NaN
10    12  20100203    NaN
14    18  20100203   11.0
3      0  20100204    NaN
7      6  20100204   12.0
11    12  20100204    NaN
15    18  20100204    NaN

也许你可以reset_index http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.reset_index.html再次,如果你需要好的index like:

print (df.pivot(index='date', columns='time', values='value')
         .unstack()
         .reset_index(name='value')
         .sort_values('date')
         .reset_index(drop=True))

    time      date  value
0      0  20100201    1.0
1      6  20100201    2.0
2     12  20100201    3.0
3     18  20100201    4.0
4      0  20100202    5.0
5      6  20100202    6.0
6     12  20100202    7.0
7     18  20100202    8.0
8      0  20100203    9.0
9      6  20100203    NaN
10    12  20100203    NaN
11    18  20100203   11.0
12     0  20100204    NaN
13     6  20100204   12.0
14    12  20100204    NaN
15    18  20100204    NaN
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

迭代 pandas 数据框,检查值并创建其中的一些值 的相关文章

  • 从Python运行Scrapy

    我正在尝试从 Python 运行 Scrapy 我正在查看这段代码 source http doc scrapy org en 0 16 topics practices html from twisted internet import
  • 配置 argparse 以接受带引号的参数

    我正在编写一个程序 除其他外 它允许用户通过参数指定要加载的模块 然后用于执行操作 我试图建立一种方法来轻松地将参数传递到这个内部模块 并且我试图使用 ArgParse 的action append 让它构建一个参数列表 然后我将通过它 这
  • networkx - 根据列表或字典值更改节点大小

    我正在尝试在networkx中制作一个图表 我在为节点分配不同的节点大小时遇到 问题 这是我一直在玩的代码 import sys from collections import defaultdict import networkx as
  • Pandas DataFrame 到列表列表

    将列表列表转换为 pandas 数据框很容易 import pandas as pd df pd DataFrame 1 2 3 3 4 5 但是如何将 df 转回列表列表呢 lol df what to do now print lol
  • python 中的神经网络:决策/分类总是给出 0.5

    首先我想说我是一个Python初学者 对神经网络也是完全陌生的 当我读到它时 我非常兴奋 并认为我从头开始设置了一些代码 参见下面的代码 但不知怎的 我的代码无法正常工作 我猜想存在一些重大错误 在算法和编程中 但我现在找不到他们 所以 在
  • Kivy:如何在树视图中使用 on_key_down 和 on_key_up 键盘事件?

    我在用python 2 7 and kivy 1 10 0 当我点击nameTextInput 然后树视图显示 我希望选择标签up and down键 并且当enter按下键 文本被复制 所选文本被复制到初始表单 就像您单击该项目时当前完成
  • 从子列表中切片元素 - Python

    我想从中返回数字 5 list 1 1 2 3 4 5 6 我以为这会起作用 但事实并非如此 print list 1 1 1 它返回一个空列表 它是索引 1 第二个列表 和位置 1 列表中的第二个数字 这不应该起作用吗 您需要两个单独的操
  • 获取pygame中图像各个像素的颜色

    如何获取传输到 pygame 表面的图像像素的颜色值 使用 Surface get at 仅返回表面层的颜色 而不返回其上位图传输的图像 方法surface get at很好 下面的示例显示了在没有 Alpha 通道的情况下位图传输图像时的
  • 熊猫读_csv。如何忽略换行符之前的分隔符

    我正在读取一个包含数值的文件 data pd read csv data dat sep header None 在文本文件中 每行以空格结尾 因此 pandas 等待不存在的值 并在每行末尾添加一个 nan 例如 2 343 4 234
  • Pandas:处理测试中看不见的数据

    我有一个训练数据集 正在构建一些机器学习模型 我无权访问测试集 并且想要处理在训练中未观察到测试中的分类特征之一的可能性 这是一个玩具示例 说明了我的意思 我有一个数据框 old 像这样 old pd DataFrame car Audi
  • Asyncio 函数在从脚本调用时有效,但在 Flask 路由中无效

    我是 Python 和这些库 模块的新手 我正在编写一个简单的 ping 测试网络扫描仪作为学习项目 我首先使用 asyncio 开发了一个脚本来 ping 网络上的地址 ip test py import asyncio import i
  • BeautifulSoup 3.1 解析器太容易崩溃

    我在使用 BeautifulSoup 解析一些不可靠的 HTML 时遇到了麻烦 事实证明 新版本中使用的 HTMLParser 的容忍度低于以前使用的 SGMLParser BeautifulSoup 有某种调试模式吗 我正在尝试找出如何阻
  • 数据集继续使用线性回归而不是决策树模型

    我想在我的数据集上使用决策树模型 但无论我做什么 它都会继续使用线性回归 数据不同 但图表仍然相同 基本上 我编写了线性回归的代码 from sklearn linear model import LinearRegression linr
  • 使用 Python 3 在 Mac 上没有名为“_tkinter”的模块

    我正在尝试使用 Tkinter 作为 GUI 将我的脚本捆绑到 app 中 而执行捆绑的包装器是 Platypus 当我去运行该应用程序时 我收到此错误 Traceback most recent call last File Users
  • Numpy,沿数组维度应用函数列表

    我有一个类型的函数列表 func list lambda x function1 input lambda x function2 input lambda x function3 input lambda x x 和形状为 4 200 2
  • 剥离功能未按预期工作

    def sstrip a b raw input enter the string to be stripped off i a strip b print i k raw input enter the string sstrip k o
  • 与 C 数组相比,带有 NumPy 数组内存视图的 Cython 性能较差

    我遇到了一个非常奇怪的结果基准 http nbviewer ipython org github rasbt One Python benchmark per day blob master ipython nbs day4 python
  • Django 会话竞争条件?

    摘要 Django 会话中是否存在竞争条件 如何防止它 我在 Django 会话方面遇到了一个有趣的问题 我认为该问题涉及由于同一用户同时发出请求而导致的竞争条件 它发生在一个同时上传多个文件的脚本中 正在本地主机上进行测试 我认为这使得同
  • Python 解释器优化

    假设我有一个字符串x Python 解释器是否足够聪明 能够知道 string replace x x 应转换为NOP 我怎样才能找到这个 是否有任何参考资料显示解释器能够根据句法分析动态执行哪种类型的优化 不 Python 不能对 NOP
  • 在 Python 中访问 Firefox 3 cookie

    我正在尝试制作一个 python 脚本 该脚本将在 Firefox 中使用 cookie 访问网站 如果 cookielib MozillaCookieJar 支持 Firefox 3 它就会工作 有没有办法在 python 中访问 Fir

随机推荐

  • 修改Symfony2中请求对象中的Url

    我正在尝试修改进入 Symfony 内核的 Url 但保持其他所有不变 已尝试使用Request create但该方法会替换请求中的所有其他变量 如何才能做到这一点 继续做了一些研究 发现可以使用重复的方法来完成 例子 new url re
  • Jackson Parser:忽略类型不匹配的反序列化

    我收到以下从服务器生成的响应cakephp id 42389 start 0000 00 00 end 0000 00 00 event id null trip id 5791 location id 231552 user id 105
  • 根据输入文本按元素排序,AngularJS

    我正在尝试根据输入文本对 angularjs 中的项目列表进行排序 因此 如果我在输入 作者 中写入 则列表将按作者排序 我的代码是这样的
  • oneM2M 中的固件更新和管理

    OneM2M 将设备管理分为两种不同的方法 1 服务层的设备管理 2 使用外部管理技术的设备管理 我想了解如何做固件升级通过使用每种方法 但是 我只找到非常基本的示例 例如获取内存资源对象作为设备管理的示例 但是使用 和 的用例是什么 有没
  • 具有多级角色的 RBAC 的数据库架构

    我正在尝试为 RBAC 提出一个数据库模式 并且我希望能够创建 部门 和 职位 职位将扩大部门的通用特权 我是否应该创建一个单一的 角色 表 同时包含职位和部门 或者我应该创建 3 个表 职位 部门和角色 职位和部门表具有角色表的外键 提前
  • 无法在亚马逊 emr 中使用 apache flink

    我无法在 Amazon EMR 中启动 Apache Flink 的纱线会话 我收到的错误消息是 tar xvfj flink 0 9 0 bin hadoop26 tgz cd flink 0 9 0 bin yarn session s
  • php:如何将字符串数据更改为数字数据

    你能告诉我如何在 php 和 mysql 脚本中更改这个结果吗 Model Class Ball S Book A Spoon Plate B Box C 这是我的数据库 CREATE TABLE IF NOT EXISTS inspect
  • 在 Node.js 中使用 Jest 和 Mock 测试 Sendgrid 实现

    我在我的nodejs应用程序中使用sendGrid电子邮件 我想用jest测试它 这是我的应用程序代码 mail js const sgMail require sendgrid mail sgMail setApiKey process
  • Python 中如何解包嵌套元组?

    尝试从数据结构中分配一个值 例如t foo 对于变量 我发现以下方法有效 var t or var t 我想知道它是如何工作的 Python 是否在左侧创建元组 列表 对来源中相关部分的引用也将不胜感激 Python 将从右侧解压值递归地
  • 在限制下从 int 列表生成所有可能的组合

    我需要用 Python 来做这个 有一个给定的列表l 可能包含超过5000个整数元素 数字总和有限制 20000 或可能更高 输出应该是从列表中选取的 2 个数字的所有可能的总和 喜欢 l 1 2 3 4 5 6 7 8 9 output
  • 如何将\u7f51更改为vim中的普通字符?

    在 ruby 中 因为它在系统范围内采用 utf 8 编码 所以这非常简单 字符串 u7f51 u5740 u4e0d u80fd u4e3a u7a7a gt 网址不能为空 谁能告诉我如何在 vim 中做到这一点 如果您想插入 Unico
  • 在线创建文件 JSON 并获取 URL [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想从字符串 JSON 创建一个 URL 来显示该字符串 JSON 你知道有一个网站支持这个吗 您可以
  • 原始资源 Android 文件路径

    我将数据库放置在 raw 文件夹中 安装 apk 时需要加载数据库路径 在哪儿 在 data data package name FILE 中 我没看到 我使用现有的 sqlite 数据库 它没有路径 它是一个资源 因此您需要使用这样的引用
  • 如何使用命令:HttpEntity?

    我希望通过这个问题解决我的长期问题 并希望你们能提供帮助 但首先 近 3 周以来 我在连接到 HTTPS 自签名证书服务器时一直遇到问题 尽管这里有多种解决方案 但我似乎无法解决我的问题 可能我不知道如何正确使用它 或者没有一些文件或导入了
  • R-特殊字符没有插入到mysql中

    如何使用r编程将特殊字符插入MySQL 我有一个数据框 它将从 tsv 文件读取数据 我想将这些值插入到包含 2000 行的 mysql 数据库数据框中 但它只插入 23 行 我正在使用 RODBC 库 问题在于数据中的特殊字符 样本数据
  • mocha 将变量传递给下一个测试

    describe some test function Could put here a shared variable it should pass a value function done done null 1 it and the
  • 圆角android图像按钮

    我正在尝试在 android ImageButton 上圆角 代码如下所示
  • Python Scikit 随机森林回归器错误

    我正在尝试从 csv 加载训练和测试数据 在 scikit sklearn 中运行随机森林回归器 然后预测测试文件的输出 TrainLoanData csv 文件包含 5 列 第一列是输出 接下来的 4 列是特征 TestLoanData
  • Docker 中的 InfluxDB 网关错误

    我开始使用 Openhab mosquitto Grafa 等在 Docker 中设置我的智能家居系统 Docker 主题对我来说仍然相对较新 我还没有设法将 InfluxDB 与 Grafana 连接起来 每当我尝试时 都会出现 Infl
  • 迭代 pandas 数据框,检查值并创建其中的一些值

    好的 我有一个 大 数据框 如下所示 date time value 0 20100201 0 1 1 20100201 6 2 2 20100201 12 3 3 20100201 18 4 4 20100202 0 5 5 201002