[英]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.