簡體   English   中英

根據條件 python pandas 向 dataframe 添加新行

[英]add new rows to dataframe based on condition python pandas

需要根據條件向 dataframe 添加新行。

當前 dataframe:

在此處輸入圖像描述

在這個 dataframe 中有 4 列。 我想要做的是檢查“時間”列並檢查每個夜班午夜 12 點的最接近值,並添加兩個新行作為 11:59:59 和 00:00:01,其值與最近的數據點相同。

例如:03-01 Night 的最接近值(到 12PM)是 21:46:54。 所以需要添加兩行,

W25     03-01 Night    RUNNING    23:59:59
W25     03-01 Night    RUNNING    00:00:01

所以最終預期的 dataframe 應該是這樣的:

在此處輸入圖像描述

樣本數據:

data={'Machine': {0: 'W5', 343: 'W5', 344: 'W5', 586: 'W5', 587: 'W5'}, 'State': {0: 'start', 343: 'STOPPED', 344: 'RUNNING', 586: 'STOPPED', 587: 'MAINT'}, 'Day-Shift': {0: '03-01 Night', 343: '03-01 Night', 344: '03-01 Night', 586: '03-01 Night', 587: '03-01 Night'}, 'Time': {0: Timestamp('2021-03-01 21:00:00'), 343: Timestamp('2021-03-01 22:16:54'), 344: Timestamp('2021-03-01 23:16:54'), 586: Timestamp('2021-03-01 23:48:45'), 587: Timestamp('2021-03-02 02:28:54')}}

真的很感謝你的支持!!!!!!

您可以使用idxmax()查找每天的最大記錄,然后創建日期時間 object。

df1 = df.loc[df.groupby([df['Time'].dt.normalize()])['Time'].idxmax()]
df1 = pd.concat([df1] * 2)

df1['Time'] = pd.to_datetime((df1['Time'].dt.normalize().astype(str) + [' 23:59:59', ' 00:00:01']))

print(df1)

    Machine  State  Day-Shift                Time
587     W25  MAINT  03-01 Day 2021-03-01 23:59:59
587     W25  MAINT  03-01 Day 2021-03-01 00:00:01

df = pd.concat([df,df1]).sort_index().reset_index(drop=True)


  Machine    State  Day-Shift                Time
0     W25    start  03-01 Day 2021-03-01 07:00:00
1     W25  STOPPED  03-01 Day 2021-03-01 07:16:54
2     W25  RUNNING  03-01 Day 2021-03-01 07:16:54
3     W25  STOPPED  03-01 Day 2021-03-01 07:28:45
4     W25    MAINT  03-01 Day 2021-03-01 07:28:54
5     W25    MAINT  03-01 Day 2021-03-01 23:59:59
6     W25    MAINT  03-01 Day 2021-03-01 00:00:01

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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