[英]Filter on dataframe based on multiple features of another dataframe
情况:
我有两个数据集:
我的任务是仅按机器的生产时间范围进行过滤。 这意味着基于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']
这是我尝试将“ Unit”(=计算机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']
不幸的是,以上代码无法正常工作。
问题:
提前谢谢你的帮助!
我想发表此评论,但我没有足够的声誉来做到这一点。 初步提示:
1)尝试检查您的钥匙。 第一个df中的单位与第二个df中的单位具有不同的模式。 您可能需要转换一个或另一个。 例如循环之前:
df1["Unit"] = df1["Unit"].apply(lambda x: x.split('_')[1]) # K2_110 -> 110
2)在您的例子中,你通过第一数据帧迭代和敷面膜上的第一个数据帧,以及
df1.loc[mask, 'Sarzs_no'] = row['Sarzs_no']
df1.loc[mask, 'Output'] = row['Output']`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.