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
列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']内部?