【发布时间】:2018-08-15 12:10:21
【问题描述】:
情况:
我有两个数据集:
- df1:包含传感器的数据,每分钟登录的机器ID
- df2:包含生产单元 ID-s、机器 ID 以及单元的开始和结束日期时间
我的任务是仅根据机器的生产时间范围进行过滤。这意味着根据 df2 中的生产日期时间(这些是 df2 中开始和停止之间的时间范围),我需要从 df2 中过滤掉相关的传感器数据(传感器数据每分钟都会记录在 df2 中,无论是否有生产或不是)。
问题:
我能够编写一个代码来过滤掉 df2 中的时间间隔,但我不知道如何过滤机器 ID。
这是我的工作代码,仅包含日期时间过滤:
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']
这是我尝试在日期时间过滤中添加“单元”(=机器 ID)过滤:
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']
不幸的是,上面的代码不起作用。
问题:
- 能否请您告诉我我做错了什么?
- 能否请您告诉我如何在机器 ID 上也有一个过滤器参数(“单元”列)?
提前感谢您的帮助!
【问题讨论】:
-
The above code unfortunatelly is not working.到底发生了什么?你有错误吗?你能提供一个minimal reproducible example吗?即数据作为文本,而不是图像。
标签: python pandas dataframe filter