将 pandas 中一个时间序列的值替换为另一个时间序列的值

2024-03-24

我有两个数据框:

s1: 
         time     X1
0  1234567000  96.32
1  1234567005  96.01
2  1234567009  96.05

s2: 
         time     X2
0  1234566999  23.88
1  1234567006  23.96

我想用第二个 DataFrame 替换第一个时间序列/DataFrame 的值,同时保留时间戳,以获得:

frame: 
         time     X2
0  1234567000  23.88
1  1234567005  23.88
2  1234567009  23.96

输出 (frame)应该有时间戳s1但值s2. time是整数(不是 UNIX 时间戳)。X1 and X2是浮动的。

有没有什么巧妙的方法可以用熊猫做到这一点?


我目前使用外连接/合并+ fillna +内连接/合并+ del 列链,但这似乎效率不高。

from __future__ import print_function
import pandas as pd

def merge_dataframes(s1, s2, common_column, back_fill=False, verbose=False):
    if verbose: print('s1: \n{0}'.format(s1))
    if verbose: print('s2: \n{0}'.format(s2))
    frame = pd.merge(s1,s2,how='outer').sort_values(by=common_column)
    if verbose: print('frame: \n{0}'.format(frame))
    frame.fillna(method='ffill', inplace=True)
    if verbose: print('frame: \n{0}'.format(frame))
    frame = pd.merge(frame,s1,how='inner').sort_values(by=common_column)
    if verbose: print('frame: \n{0}'.format(frame))        
    for column_name in s1.columns:
        if (column_name not in common_column) and (column_name not in s2.columns):
            del frame[column_name]
    if back_fill:
        frame.fillna(method='bfill', inplace=True)
        if verbose: print('frame: \n{0}'.format(frame))            
    return frame

def main():
    '''
    Demonstrate the use of merge_dataframes(s1, s2, common_column)
    '''
    s1 = pd.DataFrame({
        'time':[1234567000,1234567005,1234567009],
        'X1':[96.32,96.01,96.05]
    },columns=['time','X1'])  

    s2 = pd.DataFrame({
        'time':[1234566999,1234567006],
        'X2':[23.88,23.96]
    },columns=['time','X2'])  

    common_column = 'time'
    frame = merge_dataframes(s1, s2, common_column, verbose=True)
    print('frame: \n{0}'.format(frame))

if __name__ == "__main__":
    main()
    #cProfile.run('main()') # if you want to do some profiling

这是我的解决方案,我分解了步骤。

过去仅第一次搜索:

M1=pd.DataFrame({},index=df1.time,columns=df2.time)
M1=M1.apply(lambda x:x.index-x.name)
del M1.index.name
M2=M1.stack().reset_index()
M2=M2.loc[M2[0]>=0,]
M2[0]=abs(M2[0])
M2=M2.sort_values(['level_0',0]).drop_duplicates(['level_0'],keep='first')
df1.merge(M2,left_on='time',right_on='level_0',how='left').merge(df2,left_on='time_y',right_on='time').loc[:,['time_x','X1','X2']]
       time_x     X1     X2
0  1234567000  96.32  23.88
1  1234567005  96.01  23.88
2  1234567009  96.05  23.96

第二次搜索全部:唯一不同的是M2=M2.loc[M2[0]>=0,]

M1=pd.DataFrame({},index=df1.time,columns=df2.time)
M1=M1.apply(lambda x:x.index-x.name)
del M1.index.name
M2=M1.stack().reset_index()
#M2=M2.loc[M2[0]>=0,]
M2[0]=abs(M2[0])
M2=M2.sort_values(['level_0',0]).drop_duplicates(['level_0'],keep='first')
df1.merge(M2,left_on='time',right_on='level_0',how='left').merge(df2,left_on='time_y',right_on='time').loc[:,['time_x','X1','X2']]



Out[173]: 
       time_x     X1     X2
0  1234567000  96.32  23.88
1  1234567005  96.01  23.96
2  1234567009  96.05  23.96

通过使用更新itertools product

from itertools import product
import pandas as pd
DF=pd.DataFrame(list(product(df1.time, df2.time)), columns=['l1', 'l2'])
DF['DIFF']=DF.l1-DF.l2
DF=DF.loc[DF.DIFF>=0,]
DF=DF.sort_values(['l1','DIFF']).drop_duplicates(['l1'],keep='first')
df1.merge(DF,left_on='time',right_on='l1',how='left').merge(df2,left_on='l2',right_on='time').loc[:,['time_x','X1','X2']]


Out[357]: 
       time_x     X1     X2
0  1234567000  96.32  23.88
1  1234567005  96.01  23.88
2  1234567009  96.05  23.96
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 pandas 中一个时间序列的值替换为另一个时间序列的值 的相关文章

  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • 为什么函数返回 nil FireBase Swift [重复]

    这个问题在这里已经有答案了 为什么函数会返回 nil 我尝试添加 DispathQue 但我不明白它应该如何正确 请帮忙 func storagePutData uid String image UIImage compretition e
  • Spring 中的 Hibernate 事务管理器配置

    在我的项目中 我使用 Hibernate 进行编程事务划分 每次在我的服务方法中我都会写类似的东西 Session session HibernateUtil getSessionFactory openSession session be
  • 这样做的目的是什么(MyJobject as ILocalObject).GetObjectID

    在delphi Tokyo源代码中 我看到这两种不同的方式来检索 服务经理 var FLocationManager JLocationManager FLocationManager TJLocationManager Wrap TAnd
  • express-jwt 不尊重未受保护的路径

    有关express jwt模块的信息可以在这里找到 https github com auth0 express jwt https github com auth0 express jwt https www npmjs com pack
  • 让笑话在故事书中全球可用

    我在用 storybook react 6 in a create react app项目 我对所有商店 对象等进行了数千次测试和模拟 这些模拟利用jest fn 我想在我的故事书故事中重复使用这些模拟 但它说jest is not def
  • neo4j 使用选项卡加载 CSV

    我正在尝试使用以下命令加载 csv 并在 neo4j 2 1 0 中创建节点 使用定期提交 从 file c temp listings TXT 加载 CSV AS 行 FIELDTERMINATOR t CREATE p person i
  • mmap 与 fileinput 的优点

    我读到 mmap 比 fileinput 有优势 因为它会将页面读入内核页面缓存并在用户地址空间中共享该页面 而 fileinput 实际上将一个页面带入内核并将一行复制到用户地址空间 因此 文件输入会产生额外的空间开销 所以 我打算转向
  • 如何在 PostgreSQL 的函数内编写WITH(CTE)

    我正在尝试使用 WITH 它是 PostgreSQL 函数中的公共表表达式 以下是示例 Example Create or replace function withFunction returns void as Body Begin W
  • 变换比例导致间隙/线条

    我目前正在构建一个网站 但遇到了问题transform scale 我有一个按钮 当用户将鼠标悬停在它上面时 会发生两件事 背景沿对角线 扫过 按钮标签颜色改变 按钮稍微变大 我已经完成了这个工作 看起来非常好 但是在实施之后3 当按钮变大
  • dlclose 上不会调用共享库中全局静态变量的析构函数

    在主程序中 我dlopen and dlclose LoadLibrary and FreeLibrary分别 一个共享库 共享库包含一个实例化的静态变量dlopen 并销毁于dlclose 此行为在 MSVC 2008 和 2013 GC
  • 如何分割逗号分隔的字符串,同时忽略转义逗号?

    我需要编写 StringUtils commaDelimitedListToStringArray 函数的扩展版本 它获取一个附加参数 转义字符 所以打电话给我的 commaDelimitedListToStringArray test t
  • Docker 用户无法写入已安装的文件夹

    我有以下设置 selenium chrome image selenium node chrome debug 3 141 59 neon container name chrome e2e depends on selenium hub
  • 如何在 Cloudformation 模板中使列表项成为条件?

    我有以下创建代码管道的云形成模板 该管道分为三个阶段 Stages Name Source Actions Name Source ActionTypeId Category Source Owner ThirdParty Version
  • 如何在tf-slim中使用evaluation_loop和train_loop

    我正在尝试实现一些不同的模型并在 CIFAR 10 上训练它们 我想使用 TF slim 来做到这一点 看起来 TF slim 有两个在训练期间有用的主要循环 train loop 和 evaluation loop 我的问题是 使用这些循
  • mod_deflate 与 Django GZipMiddleware,使用哪一个进行部署?

    我们正在使用 Apache 2 2 mod wsgi 部署 Django 应用程序 我们应该在 Apache 中启用 mod deflate 还是使用 Django 的 GZipMiddleware 哪个选项表现更好 你可能应该测试一下才能
  • Directory.GetFiles 查找不存在的文件

    我刚刚偶然发现了一个没有记录的行为GetFiles中的方法System IO Directory 每当searchPattern传递给该方法的参数包含保留的 Windows 设备名称 例如 nul or aux bmp 该方法返回一个包含不
  • 在android中将图像和视频发送到服务器

    我正在创建一个用于拍摄照片和视频的 Android 应用程序 捕获图像后 我想将带有日期和一些文本的图像发送到网络服务器 在服务器端 我正在使用这些图片和视频制作一个应用程序 拍摄的图像将保存在存储卡中 如何使用 JSON 发送带有文本的图
  • 如何获取Jupyter Notebook的路径?

    有没有获取Notebook路径的函数 我在谷歌上搜索了一些关于这个主题的信息 但没有找到一个简单的方法 我想获得笔记本的路径 这样我就可以在其他地方使用它 这样我就可以在与笔记本相同的路径中保存 使用文件 而不必担心它的保存位置 现在我的解
  • 如何在没有机器人的情况下在node.js中接收我自己的电报消息

    我想在nodejs 一个例子 中有一个非常简单的客户端 它可以接收来自我的电报联系人的消息 我刚刚在互联网上搜索 但只得到了机器人样本 我想接收群组消息 但我无权向我的机器人授予权限 因此我想知道我是否可以在没有机器人作为中介的情况下接收自
  • 将 pandas 中一个时间序列的值替换为另一个时间序列的值

    我有两个数据框 s1 time X1 0 1234567000 96 32 1 1234567005 96 01 2 1234567009 96 05 s2 time X2 0 1234566999 23 88 1 1234567006 2