第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

確定錯誤的值并在列之間移動它們

確定錯誤的值并在列之間移動它們

冉冉說 2022-11-29 15:27:14
這是我簡化的 CSV 樣本數(shù)據(jù):Project;Step 1 Start;Step 1 End;Step 2 Start;Step 2 End;Step 3 Start;Step 3 End;Step 4 Start;Step 4 End;Step 5 Start;Step 5 End;FinishA;01.01.2020;02.01.2020;02.01.2020;03.01.2020;03.01.2020;04.01.2020;04.01.2020;05.01.2020;05.01.2020;06.01.2020;06.01.2020B;01.02.2020;02.02.2020;02.02.2020;03.02.2020;;;;;03.02.2020;04.02.2020;04.02.2020C;01.03.2020;02.03.2020;02.03.2020;;;;;;;03.03.2020;03.03.2020D;01.04.2020;;;;;;;;;02.04.2020;02.04.2020E;01.05.2020;02.05.2020;02.05.2020;03.05.2020;;;03.05.2020;;;04.05.2020;04.05.2020讀取文件:import pandas as pddf = pd.read_csv("sampledata.csv", sep=";")數(shù)據(jù)結(jié)構(gòu):Project Step 1 Start  Step 1 End Step 2 Start  Step 2 End Step 3 Start  \0       A   01.01.2020  02.01.2020   02.01.2020  03.01.2020   03.01.2020   1       B   01.02.2020  02.02.2020   02.02.2020  03.02.2020          NaN   2       C   01.03.2020  02.03.2020   02.03.2020         NaN          NaN   3       D   01.04.2020         NaN          NaN         NaN          NaN   4       E   01.05.2020  02.05.2020   02.05.2020  03.05.2020          NaN      Step 3 End Step 4 Start  Step 4 End Step 5 Start  Step 5 End      Finish  0  04.01.2020   04.01.2020  05.01.2020   05.01.2020  06.01.2020  06.01.2020  1         NaN          NaN         NaN   03.02.2020  04.02.2020  04.02.2020  2         NaN          NaN         NaN          NaN  03.03.2020  03.03.2020  3         NaN          NaN         NaN          NaN  02.04.2020  02.04.2020  4         NaN   03.05.2020         NaN          NaN  04.05.2020  04.05.2020每一行代表一個項目每個項目可以運行不同的步驟(在這個簡化的示例中只有 5 個項目和 5 個步驟。原始數(shù)據(jù)有超過 100k 個項目和 40 個步驟)每個步驟都有兩列。項目進入步驟時為“開始”列,項目離開步驟時為“結(jié)束”列每個項目都以“第 1 步開始”開始,以“完成”結(jié)束,但并非必須遵循每個步驟我的問題:有時“結(jié)束”時間戳寫在錯誤的列中,我必須用 python 更正它。當完成一個項目時,最后一個“結(jié)束”時間戳寫在“Step 5 End”而不是最后一步“Step X End”。如何確定錯誤的值如果“Finish”和“Step 5 End”包含時間戳并且“Step 5 Start”為 NaN。如何更正錯誤的值如果“Start”和“End”包含值,請檢查從 1 到 n 的每個步驟。如果“Start”包含一個值而“End”為空,則將時間戳從“Step 5 End”移動到“Step X End”
查看完整描述

1 回答

?
眼眸繁星

TA貢獻1873條經(jīng)驗 獲得超9個贊

你可以用


# get where the starts are not empty

arr_start = df.filter(like='Start').notna().to_numpy()

# get the end columns

df_end = df.filter(like='End')

# fillna the right missing value

df = df.fillna(df_end.bfill(axis=1)[arr_start&df_end.isna()])

# remove the values of the last step end if no value in the start of this step

df.loc[~arr_start[:,-1], df_end.columns[-1]] = np.nan


print (df)

  Project Step 1 Start  Step 1 End Step 2 Start  Step 2 End Step 3 Start  \

0       A   01.01.2020  02.01.2020   02.01.2020  03.01.2020   03.01.2020   

1       B   01.02.2020  02.02.2020   02.02.2020  03.02.2020          NaN   

2       C   01.03.2020  02.03.2020   02.03.2020  03.03.2020          NaN   

3       D   01.04.2020  02.04.2020          NaN         NaN          NaN   

4       E   01.05.2020  02.05.2020   02.05.2020  03.05.2020          NaN   


   Step 3 End Step 4 Start  Step 4 End Step 5 Start  Step 5 End      Finish  

0  04.01.2020   04.01.2020  05.01.2020   05.01.2020  06.01.2020  06.01.2020  

1         NaN          NaN         NaN   03.02.2020  04.02.2020  04.02.2020  

2         NaN          NaN         NaN          NaN         NaN  03.03.2020  

3         NaN          NaN         NaN          NaN         NaN  02.04.2020  

4         NaN   03.05.2020  04.05.2020          NaN         NaN  04.05.2020  

多一個解釋,arr_start&df_end.isna()允許發(fā)現(xiàn)哪個步驟有開始而不是結(jié)束,使用bfill將有助于獲得最后一步結(jié)束到需要填充的結(jié)束步驟的值


查看完整回答
反對 回復(fù) 2022-11-29
  • 1 回答
  • 0 關(guān)注
  • 90 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號