Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据特定条件(包括日期时间)映射多个数据帧中的值?_Python_Pandas_Dataframe_Bigdata_Inner Join - Fatal编程技术网

Python 如何根据特定条件(包括日期时间)映射多个数据帧中的值?

Python 如何根据特定条件(包括日期时间)映射多个数据帧中的值?,python,pandas,dataframe,bigdata,inner-join,Python,Pandas,Dataframe,Bigdata,Inner Join,我有两个数据帧,df\u pe和df\u merged。这两个数据帧都有几行和几列。现在,我想使用这些数据帧完成一些具体的事情: 在df\u merged中,有一列名为ST,其中包含各种事件的时间戳,格式为(2017-08-27 00:00:00)。在df_pe中,有两列Ton和Toff,其中包含事件开始的时间和事件结束的时间。例如(Ton随机行的值:2018-08-17 01:20:00而Toff值2018-08-17 02:30:00) 其次,df_pe中有一列,即EC。我有另一个名为df_

我有两个数据帧,
df\u pe
df\u merged
。这两个数据帧都有几行和几列。现在,我想使用这些数据帧完成一些具体的事情:

  • df\u merged
    中,有一列名为
    ST
    ,其中包含各种事件的时间戳,格式为
    (2017-08-27 00:00:00)
    。在
    df_pe
    中,有两列
    Ton
    Toff
    ,其中包含事件开始的时间和事件结束的时间。例如(
    Ton
    随机行的值:
    2018-08-17 01:20:00
    Toff
    2018-08-17 02:30:00
  • 其次,
    df_pe
    中有一列,即
    EC
    。我有另一个名为
    df_uniqueal
    的数据帧,它还有一个名为
    EC
    的列。我想做的是:

    a。对于
    df_merged
    中的所有行,只要ST值在
    df_pe
    中的
    Ton
    Toff
    的持续时间内,就在
    df_merged
    中创建两个新列:
    EC
    ED
    。将数据帧
    df_pe
    中的
    EC
    值追加/放入此新列,同时将数据帧
    df_uniqueal
    的值放入新列
    ED
    (这最终是
    df_pe
    中的
    EC
    的映射版本,用于获取
    df_uniqueal
    中的
    ED
    )。如果所有条件都不匹配/执行此过程后没有
    NaN
    s(缺少值),则将字符串
    “NF”
    放入
    df_merged
    的新
    ED
    列,同时将整数
    0
    放入
    df_merged
    的新
    EC

  • 我已经探索了SO和SE,但没有发现任何实质性的东西。我们非常感谢您在这方面提供的任何帮助

    这是我尝试在Python中使用
    for
    循环来迭代数据帧以实现第一个条件,但它永远运行(永不结束),我认为这不是实现这一点的最佳方式

    for i in range(len(df_merged)):
        for j in range(len(df_pe)):
            if df_pe.TOn[j] < df_merged.ST[i] < df_pe.TOff[j]:
                df_merged.EC[i] = df_pe.EC[j]
                df_merged.ED[i] = df_uniqueal.ED[df_processed.EC[j]]
            else:
    
                df_merged.EC[i] = 0
                df_merged.ED[i] = "NF"
    
    范围内i的
    (len(df_合并)):
    对于范围内的j(len(df_pe)):
    如果df_pe.TOn[j]
    编辑 请参考图片了解预期输出和数据帧的示例


    相关列以粗体显示(请注意,列号可能不同,但本示例中的列名相同)。

    如果我正确理解了问题,希望这能帮助您开始

    df_合并['ST']中的i、val的
    项()
    
    bool_idx=(df_pe['TOn']如果我正确理解了这个问题,希望这能让你开始

    df_合并['ST']中的i、val的
    项()
    
    bool_idx=(df_pe['TOn']这很难阅读和理解。包括一个示例数据框和一个示例预期输出。我们阅读数据比大文本块更好。感谢@Erfan的建议。我现在添加了预期输出和婴儿示例。干杯!我们无法复制和粘贴图片。你能复制这些数据以便我们复制它们吗?你可以做两件事:1.
    print()
    在您的控制台中复制并粘贴输出到此处或2。请参阅此处如何在
    pandas
    中创建数据帧。我知道如何创建dataframes@Erfan。但问题是我需要解决我在此处提到的这个婴儿示例,因为我无法共享确切的数据……我希望您理解这个问题。我只希望关于Python中适当的函数/方法的建议可以帮助实现这一点,而不是确切的代码,因为我自己可以做到。您是否希望df_merged['ST']的值只有一行位于df_pe['Ton']和df_pe['Toff']?这很难阅读和理解。包括一个示例数据框和一个示例预期输出。我们阅读数据比大文本块更好。感谢@Erfan的建议。我现在添加了预期输出和婴儿示例。干杯!我们无法复制和粘贴图片。你能复制这些数据以便我们可以复制它们吗?你可以做两件事:1.
    print()
    在您的控制台中复制并粘贴输出到此处或2。请参阅此处如何在
    pandas
    中创建数据帧。我知道如何创建dataframes@Erfan。但问题是我需要解决我在此处提到的这个婴儿示例,因为我无法共享确切的数据……我希望您理解这个问题。我只希望关于Python中适当的函数/方法的建议可以帮助实现这一点,而不是确切的代码,因为我自己可以做到。您是否希望df_merged['ST']的值只有一行位于df_pe['Ton']和df_pe['Toff']内部?