如何根据索引DateTime列的值制作新列

发布于 2025-02-02 20:45:42 字数 1725 浏览 1 评论 0原文

我想制作一个名为“状态”的新列。并基于DateTime,我想为新列提供一个值。因此,当之间是:

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'

I would like to make a new column named 'state'. And based on the datetime I would like to give a value to the new column. So when it is between:

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

I would like the column to say 'A'. And when it is between:

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

I would like it to say 'S'.

In my script (below) I tried to first cut the data separately first to add them together after. But I think there must be a better way. But I really don't know how to express this question and find the answer. I hope someone can help me out.

I have a dataframe that looks like this:

                           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

And this is my code:

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'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

随遇而安 2025-02-09 20:45:42

我已经找到了答案。

代码:

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'

I already found the answer.

code:

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'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文