我有一個包含“日期”作為索引和“樣本值”功能的資料框。此資料框顯示這些日期的示例結果。但是,由于無法在當天采集樣本,因此某些樣本結果正在重復。例如,第一個樣本是在2019-08-17 07:30:00. 由于無法取第二個樣品2019-08-17 08:00:00,它顯示的結果與前一個相同。我需要用零更改這些值以清理資料,但我不知道該怎么做。有沒有可能的方法來做到這一點?我會把想要的結果作為dataframe_desired
dataframe =
date Sample Result
2019-08-17 07:30:00 548.700012
2019-08-17 08:00:00 548.700012
2019-08-17 08:30:00 548.700012
2019-08-17 09:00:00 553.099976
2019-08-17 09:30:00 555.346976
2019-08-17 10:00:00 548.700012
2019-08-17 10:30:00 548.700012
2019-08-17 11:00:00 546.750000
2019-08-17 11:30:00 546.750000
dataframe_desired =
date Sample Result
2019-08-17 07:30:00 548.700012
2019-08-17 08:00:00 0.000000
2019-08-17 08:30:00 0.000000
2019-08-17 09:00:00 553.099976
2019-08-17 09:30:00 555.346976
2019-08-17 10:00:00 548.700012
2019-08-17 10:30:00 0.000000
2019-08-17 11:00:00 546.750000
2019-08-17 11:30:00 0.000000
uj5u.com熱心網友回復:
這應該可以完成作業...
dataframe["Dup Result"] = dataframe["Sample Result"].duplicated(keep='first')
dataframe["Clean Result"] = dataframe.apply(lambda row: 0.0 if row["Dup Result"] else row["Sample Result"], axis=1)
dataframe = dataframe.drop("Dup Result", axis=1)
uj5u.com熱心網友回復:
如果我正確理解了您的問題,那么您正在嘗試將等于前一個的值設定為零。這可以通過 diff 方法來完成:
df.loc[df.diff().squeeze()==0]=0
這里 diff 回傳一個資料幀,其中 diff_i,j = df_i,j - df_i-1,j。Squeezez 用于將單列資料幀轉換為序列,以便何時可以將其作為索引傳遞給 loc。然后我們在差異為 0 的地方設定值 0。
uj5u.com熱心網友回復:
您可以使用diff:
df.loc[df['Sample Result'].diff().eq(0), 'Sample Result'] = 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/313581.html
上一篇:如何回圈二維陣列并修改其值
