gpt4 book ai didi

python - 数据帧 : Add 'inplace' a column with the cumcount() of the dates appeared in the datetime. 索引

转载 作者:行者123 更新时间:2023-12-01 07:03:08 24 4
gpt4 key购买 nike

我想添加一列(标题为“acc_dates”),该列将给出带有日期时间索引的数据框中日期的增加计数。这是一个例子:

import pandas as pd
import datetime as dt

datarange=pd.date_range('01-05-2018 00:00:00', periods=50, freq="4H")
range_series_1=pd.Series(np.random.randint(-5,3,size=50).astype(float), index=datarange)
df=pd.DataFrame({'value1':range_series_1})

df.head(5)
Out[287]:
value1
datetime
2018-01-05 00:00:00 1.0
2018-01-05 04:00:00 -2.0
2018-01-05 08:00:00 -2.0
2018-01-05 12:00:00 -3.0
2018-01-05 16:00:00 1.0

如果我应用cumcount(),“value1”列就会消失。这是我输入的内容和得到的结果:

df.groupby(df.index.date).cumcount().to_frame('acc_dates').head(15)
Out[288]:
acc_dates
datetime
2018-01-05 00:00:00 0
2018-01-05 04:00:00 1
2018-01-05 08:00:00 2
2018-01-05 12:00:00 3
2018-01-05 16:00:00 4
2018-01-05 20:00:00 5
2018-01-06 00:00:00 0
2018-01-06 04:00:00 1
2018-01-06 08:00:00 2
2018-01-06 12:00:00 3
2018-01-06 16:00:00 4
2018-01-06 20:00:00 5
2018-01-07 00:00:00 0
2018-01-07 04:00:00 1
2018-01-07 08:00:00 2

我可以合并“datetime”上的两个数据帧以获得所需的输出,但我宁愿不应用 pd.merge() 方法。这是我期望的输出:

Out[296]:
value1 acc_dates
datetime
2018-01-05 00:00:00 1.0 0
2018-01-05 04:00:00 -2.0 1
2018-01-05 08:00:00 -2.0 2
2018-01-05 12:00:00 -3.0 3
2018-01-05 16:00:00 1.0 4
2018-01-05 20:00:00 0.0 5
2018-01-06 00:00:00 2.0 0
2018-01-06 04:00:00 -3.0 1
2018-01-06 08:00:00 -5.0 2
2018-01-06 12:00:00 -5.0 3
2018-01-06 16:00:00 1.0 4
2018-01-06 20:00:00 -2.0 5
2018-01-07 00:00:00 2.0 0
2018-01-07 04:00:00 1.0 1
2018-01-07 08:00:00 -1.0 2
2018-01-07 12:00:00 -2.0 3

理想情况下,我正在寻找一种方法来以某种方式在初始 df inplace 中创建和添加列。

这可行吗?我欢迎您的建议。

最佳答案

我认为mergeconcat不是必需的,只需将输出分配给新列:

df['acc_dates'] = df.groupby(df.index.date).cumcount()

关于python - 数据帧 : Add 'inplace' a column with the cumcount() of the dates appeared in the datetime. 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58554126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com