gpt4 book ai didi

python - Pandas 。按数据范围将重新采样的 df 与原始 df 连接

转载 作者:行者123 更新时间:2023-11-30 22:35:46 26 4
gpt4 key购买 nike

我需要根据日期时间范围连接 2 个数据帧。我已经用 google/stacktrace 搜索过它并找到了一些可能的解决方法。

由于我对数据进行了重新采样并希望将聚合版本连接回原始版本,因此我认为可能有一种方法可以通过添加表示可能聚合日期时间的“连接条件列”来模拟重新采样。

这是我的基地:

import pandas as pd
import numpy as np
import quandl

df = quandl.get("WIKI/GOOGL")
df = df.ix[:, ['Close']]

print('***************** ORIG')
print(df.head(10).to_string())

ac = df['Close'].resample('3D').mean()

print('***************** RESAMPLED')
print(ac.head(10).to_string())


frames = [ac]
ac2 = pd.concat(frames, axis=1, join='inner')

print('***************** RESAMPLED 2')
print(ac2.head(10).to_string())



#new = pd.merge(df, ac2, on=df.index, how='left')

#print('***************** JOIN')
#print(new.to_string())

这是输出:

***************** ORIG
Close
Date
2004-08-19 100.335
2004-08-20 108.310
2004-08-23 109.400
2004-08-24 104.870
2004-08-25 106.000
2004-08-26 107.910
2004-08-27 106.150
2004-08-30 102.010
2004-08-31 102.370
2004-09-01 100.250
***************** RESAMPLED
Date
2004-08-19 104.322500
2004-08-22 107.135000
2004-08-25 106.686667
2004-08-28 102.010000
2004-08-31 101.376667
2004-09-03 100.010000
2004-09-06 101.940000
2004-09-09 103.820000
2004-09-12 109.495000
2004-09-15 114.486667
Freq: 3D

如果我能计算一个新列那就太酷了

***************** ORIG
Close newDate
Date
2004-08-19 100.335 2004-08-19
2004-08-20 108.310 2004-08-19
2004-08-23 109.400 2004-08-22
2004-08-24 104.870 2004-08-22
2004-08-25 106.000 2004-08-25
2004-08-26 107.910 2004-08-25
2004-08-27 106.150 2004-08-25
2004-08-30 102.010 2004-08-28
2004-08-31 102.370 2004-08-31
2004-09-01 100.250 2004-08-31

并使用这个连接标准...

但我并不急于在循环中重新编程重新采样...如果您想建议...:)

有什么想法吗?

谢谢!E.

**** 编辑 ****我找到了改变日期的解决方案。现在我可以加入了:)

print('***************** RESAMPLED 2')
ac2['folgep'] = ac2.index.shift(1)
ac2['DatumJoin'] = ac2.index
print(ac2.head(10).to_string())


df['matched'] = np.piecewise(df.index, [(df.index >= start_date)&(df.index <= end_date) for start_date, end_date in zip(ac2.index, ac2.folgep.values)], ac2.DatumJoin)

print('***************** after join')
print(df.head(10).to_string())

最佳答案

你可以简单地reindex您的重新采样数据:

df['Close3D'] = df.Close.resample('3D').mean().reindex(df.index, method='ffill')

关于python - Pandas 。按数据范围将重新采样的 df 与原始 df 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44416281/

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