sách gpt4 ai đã đi

python - 当您的数据不在偶数时间间隔内时,是否有一种快速的方法可以在偶数时间间隔内对 Pandas Dataframe 进行滚动求和?

In lại 作者:行者123 更新时间:2023-12-04 09:16:27 26 4
mua khóa gpt4 Nike

假设我有一个数据帧,其中索引是时间戳。但是,时间戳的间隔不均匀,所以我想让它均匀。例如,我想设置我的时间间隔,1 分钟的时间间隔。我想对从 t0 到 t1 的所有值求和,并将该总和作为 t1 处的值。
我一直在做的方式是通过循环。首先,我创建一个带有开始和结束时间的时间戳列表。然后我将我的数据帧子集为一个小数据帧,然后在该小数据帧上进行计算(在本例中为总和)。然后我将我的值保存到一个列表中。并重复。
不幸的是,这需要很长时间。
有没有更快的方法来做到这一点?我正在处理非常小的时间尺度上的数据,所以我认为用 0 数据创建额外的行并使用内置的滚动求和函数是没有意义的......
数据示例如下:

2020-04-01 00:03:48.197028 1
2020-04-01 00:24:07.186631 11
2020-04-01 00:24:07.200361 5
2020-04-01 00:24:07.204382 1
2020-04-01 00:24:07.208525 13
我想将其转换为以下内容:
2020-04-01 00:24:00.000000 sum(23:59 to 24:00)
2020-04-01 00:24:01.000000 sum(24:00 to 24:01)
2020-04-01 00:24:02.000000 sum(24:01 to 24:02)
2020-04-01 00:24:03.000000 sum(24:02 to 24:03)
2020-04-01 00:24:04.000000 sum(24:03 to 24:04)

1 Câu trả lời

创建一个均匀间隔的日期时间索引,将其应用于您的数据并使用均匀间隔的索引对数据框进行滚动求和。
由于这将发生在 numpy/pandas 中,因此它比对数据执行 Python 循环要快得多。
使用示例中的数据并假设毫秒间隔:

df = """2020-04-01 00:03:48.197028\t1
2020-04-01 00:24:07.186631\t11
2020-04-01 00:24:07.200361\t5
2020-04-01 00:24:07.204382\t1
2020-04-01 00:24:07.208525\t13"""

# Reading the sample dataframe
from io import StringIO
mfile = StringIO(df)
adf = pd.read_csv(mfile, sep="\t")
adf.columns = ['mtimestamp', 'mnumber']
adf.mtimestamp = pd.to_datetime(adf.mtimestamp)

# Creating a proper datetime index
adf = adf.set_index(pd.DatetimeIndex(adf['mtimestamp']))
adf = adf.drop(columns='mtimestamp')

# Resampling and summing
adf.resample('1ms').sum()
产量
                        mnumber
mtimestamp
2020-04-01 00:24:07.186 11
2020-04-01 00:24:07.187 0
2020-04-01 00:24:07.188 0

关于python - 当您的数据不在偶数时间间隔内时,是否有一种快速的方法可以在偶数时间间隔内对 Pandas Dataframe 进行滚动求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63189849/

26 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com