Python 基于另一个数据帧的多个功能对数据帧进行筛选

Python 基于另一个数据帧的多个功能对数据帧进行筛选,python,pandas,dataframe,filter,Python,Pandas,Dataframe,Filter,情况: 我有两个数据集: df1:包含传感器的数据,每分钟记录一次机器ID df2:包含生产单元ID-s、机器ID以及单元的开始和结束日期时间 df1: df2: 我的任务是只对机器的生产时间进行过滤。这意味着根据df2中的生产日期时间(这些是df2中开始和停止之间的时间范围),我需要从df2中过滤出相关的传感器数据(传感器数据每分钟记录在df2中,无论是否有生产)。 问题: 我能够编写一个代码来过滤df2中的时间间隔,但我不知道如何过滤机器ID。 以下是我的工作代码,其中仅包含d

情况:
我有两个数据集:

  • df1:包含传感器的数据,每分钟记录一次机器ID
  • df2:包含生产单元ID-s、机器ID以及单元的开始和结束日期时间
df1:

df2:

我的任务是只对机器的生产时间进行过滤。这意味着根据df2中的生产日期时间(这些是df2中开始和停止之间的时间范围),我需要从df2中过滤出相关的传感器数据(传感器数据每分钟记录在df2中,无论是否有生产)。

问题:
我能够编写一个代码来过滤df2中的时间间隔,但我不知道如何过滤机器ID。
以下是我的工作代码,其中仅包含datetime筛选:

for index, row in df1.iterrows():
    mask = ((df2.index >= row['Start']) & (df2.index <= row['Stop']))
    df2.loc[mask, 'Sarzs_no'] = row['Sarzs_no']
    df2.loc[mask, 'Output'] = row['Output']
for index, row in df1.iterrows():
    mask = ((df1.index >= row['Start']) & (df1.index <= row['Stop']) & (row['Unit']==df1.Unit))
    df1.loc[mask, 'Sarzs_no'] = row['Sarzs_no']
    df1.loc[mask, 'Output'] = row['Output']
对于索引,df1.iterrows()中的行:

mask=((df2.index>=行['Start'])和(df2.index=行['Start'])和(df1.index我想将此作为评论发布,但我没有足够的信誉来进行此操作。作为初始提示:

1) 试着检查你的钥匙。第一个df中的单位和第二个df中的单位有不同的模式。你可能需要变换其中一个。 e、 g.循环前:

df1[“Unit”]=df1[“Unit”]应用(lambda x:x.split(“'u')[1])K2_110->110

2) 在您的示例中,您迭代第一个数据帧,并在第一个数据帧上应用掩码

df1.loc[mask, 'Sarzs_no'] = row['Sarzs_no']
df1.loc[mask, 'Output'] = row['Output']`

不幸的是,上述代码不起作用。
到底发生了什么?你有错误吗?你能提供一份工作吗?i、 e.数据为文本,而非图像。