簡體   English   中英

根據另一個數據框的多個功能對數據框進行過濾

[英]Filter on dataframe based on multiple features of another dataframe

情況:
我有兩個數據集:

  • df1:包含傳感器的數據,每分鍾登錄的機器ID
  • df2:包含生產單位ID,機器ID以及單位的開始和結束日期時間

DF1:
在此處輸入圖片說明

DF2:
在此處輸入圖片說明

我的任務是僅按機器的生產時間范圍進行過濾。 這意味着基於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. 您能告訴我我在做什么錯嗎?
  2. 您能否讓我知道如何在機器ID(列“ Unit”)上添加過濾參數?

提前謝謝你的幫助!

我想發表此評論,但我沒有足夠的聲譽來做到這一點。 初步提示:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM