簡體   English   中英

如何根據索引日期時間列的值創建新列

[英]How can I make a new column based on values of my index datetime column

我想創建一個名為“state”的新列。 根據日期時間,我想為新列賦值。 所以當它介於兩者之間時:

A_start_646 = datetime.datetime(2022,4,27, 11,30,0)
S_start_646 = datetime.datetime(2022,4,28, 1,0,0)

我希望專欄說“A”。 當它介於兩者之間時:

S_start_646 = datetime.datetime(2022,4,28, 1,0,0)
D_start_646 = datetime.datetime(2022,5,2,   15,25,0)

我希望它說“S”。

在我的腳本(如下)中,我嘗試先分別剪切數據,然后再將它們加在一起。 但我認為必須有更好的方法。 但我真的不知道如何表達這個問題並找到答案。 我希望有人可以幫助我。

我有一個看起來像這樣的數據框:

                           x      y      z  bat
date                                             
2022-04-15 10:17:14.721  0.125  0.016  1.032  NaN
2022-04-15 10:17:39.721  0.125 -0.016  1.032  NaN
2022-04-15 10:18:04.721  0.125  0.016  1.032  NaN
2022-04-15 10:18:29.721  0.125 -0.016  1.032  NaN
2022-04-15 10:18:54.721  0.125  0.016  1.032  NaN
                       ...    ...    ...  ...
2022-05-02 17:03:04.721 -0.750 -0.016  0.710  NaN
2022-05-02 17:03:29.721 -0.750 -0.016  0.710  NaN
2022-05-02 17:03:54.721  0.719 -0.302 -0.419  NaN
2022-05-02 17:04:19.721 -0.625 -0.048 -0.871  NaN
2022-05-02 17:04:44.721 -0.969  0.016 -0.032  NaN

這是我的代碼:

data_646 = pd.read_csv('data.csv', index_col=(0), delimiter=';', skiprows=30, names = ['date','x','y','z','bat'], parse_dates=['date'])

print(data_646)

## 646
A_start_646 = datetime.datetime(2022,4,27, 11,30,0)
S_start_646 = datetime.datetime(2022,4,28, 1,0,0)
D_start_646 = datetime.datetime(2022,5,2,   15,25,0)
D_end_646 = datetime.datetime(2022,5, 2,   15,50,0)


A_646 = data_646[A_start_646 : S_start_646]
S_646 = data_646[S_start_646 : D_start_646]
D_646 = data_646[D_start_646 : D_end_646]

A_646['state']='A'
S_646['state']='S'
D_646['state']='D'

我已經找到了答案。

代碼:

data_646.loc[A_start_646 : S_start_646, 'state'] = 'A'
data_646.loc[S_start_646 : D_start_646, 'state'] = 'S'
data_646.loc[D_start_646 : D_end_646, 'state'] = 'D'

暫無
暫無

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

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