【发布时间】:2021-10-05 08:31:54
【问题描述】:
我已经生成了 2 分钟的脚本历史数据和 1 分钟的净值报价的 ohlc 数据。 但是我对合并这两个数据框感到震惊,因为我希望将 1 分钟的 ohlc 数据聚合到需要按顺序合并到历史数据中。
历史数据输出
date open high low close fast_ema slow_ema slow_sma
0 2021-06-03 22:52:00 5071.0 5071.0 5071.0 5071.0 NaN NaN NaN
1 2021-06-03 22:54:00 5071.0 5071.0 5071.0 5071.0 NaN NaN NaN
2 2021-06-03 22:56:00 5071.0 5071.0 5071.0 5071.0 NaN NaN NaN
3 2021-06-03 22:58:00 5071.0 5071.0 5071.0 5071.0 NaN NaN NaN
... ... ... ... ... ... ... ... ...
13920 2021-07-29 21:22:00 5453.0 5453.0 5450.0 5450.0 5448.7956 5443.4555 5425.56
13921 2021-07-29 21:24:00 5450.0 5452.0 5449.0 5451.0 5449.2365 5444.1414 5426.07
13922 2021-07-29 21:26:00 5450.0 5454.0 5450.0 5453.0 5449.9892 5444.9467 5426.57
13923 2021-07-29 21:28:00 5453.0 5453.0 5450.0 5450.0 5449.9914 5445.4061 5427.08
13924 2021-07-29 21:30:00 5453.0 5454.0 5450.0 5452.0 5450.3931 5446.0056 5427.55
[13924 rows x 8 columns]
让我们说它的代码为:df3=pd.DataFrame(data)
i min 蜡烛的输出,ohlc 数据
{
58375943: {
datetime.datetime(2021, 7, 29, 21, 43): {'high': 5451.0, 'low': 5450.0, 'open': 5450.0, 'close': 5451.0},
datetime.datetime(2021, 7, 29, 21, 44): {'high': 5451.0, 'low': 5451.0, 'open': 5451.0, 'close': 5451.0}
}
}
让我们说它的代码为:df = pd.DataFrame(candle,index=[0])
我想合并这两个数据,以便在 df = pd.DataFrame(candle,index=[0]) 中生成的每 1 分钟数据需要通过迭代索引计数添加到 df3=pd.DataFrame(data) IE; [13924 行 x 8 列] 每个 df 行 13924 行 +1 依此类推。
我的代码如下。但它只从每个 imin 时间帧生成 df 中的行,并且与 df3 数据帧的第一个索引相同的合并,并且每分钟替换同一行而不是添加行。
代码如下
df = pd.DataFrame(candle,index=[0])
df.drop(df.columns[[0,6]], axis = 1, inplace = True)
df.rename(columns = {'Time':'date'}, inplace = True)
print("data: \n",df)
global rows
dfs = []
for row in df.iterrows():
df_cols = ['date','open','high','low','close']
d = pd.DataFrame(df,columns=df_cols,index=[])
dfs.append(df)
print(dfs)
df1 = pd.concat(dfs, ignore_index=True)
df2 = pd.concat([df1,df3])
print ("Final dataframe: \n",df2)
输出最终数据帧:
决赛:
date open high low close fast_ema slow_ema slow_sma
0 2021-07-29 21:42:00 5450.0 5450.0 5448.0 5449.0 NaN NaN NaN
0 2021-06-03 22:52:00 5071.0 5071.0 5071.0 5071.0 NaN NaN NaN
1 2021-06-03 22:54:00 5071.0 5071.0 5071.0 5071.0 NaN NaN NaN
2 2021-06-03 22:56:00 5071.0 5071.0 5071.0 5071.0 NaN NaN NaN
3 2021-06-03 22:58:00 5071.0 5071.0 5071.0 5071.0 NaN NaN NaN
... ... ... ... ... ... ... ... ...
13920 2021-07-29 21:22:00 5453.0 5453.0 5450.0 5450.0 5448.7956 5443.4555 5425.56
13921 2021-07-29 21:24:00 5450.0 5452.0 5449.0 5451.0 5449.2365 5444.1414 5426.07
13922 2021-07-29 21:26:00 5450.0 5454.0 5450.0 5453.0 5449.9892 5444.9467 5426.57
13923 2021-07-29 21:28:00 5453.0 5453.0 5450.0 5450.0 5449.9914 5445.4061 5427.08
13924 2021-07-29 21:30:00 5453.0 5454.0 5450.0 5452.0 5450.3931 5446.0056 5427.55
[13926 rows x 8 columns]
如何解决这个问题。请帮忙?
【问题讨论】:
-
感谢 Andrej 以首选格式编辑帖子
-
有人帮帮我吗?
-
我不清楚您希望如何组合数据帧。是否要将 1 分钟数据添加到 2 分钟数据?您希望将 1 分钟数据重新采样为 2 分钟数据吗?你想让它们交错在数据框中,按时间排序吗?作为一个具体的例子,请从两个原始数据帧(作为数据帧)中的每一个中给出四或五行实际数据,和然后显示准确地你想要什么那些相同的四五行在最终数据框中查看。这应该有助于我澄清您要完成的工作。
-
@Daniel Sir 我想合并 2 个数据框。第一个数据框由到目前为止 2 个月的原油历史数据组成,例如 df3,并通过函数的返回值作为“数据”将数据获取到该 df3,df3 的输出显示为上面历史数据的输出。另一个 datframe 存储从现在开始生成的 1 分钟数据,我将其命名为 df,其中包含逐个滴答生成的 1 分钟数据的 ohlc 值。我希望这个 df 数据与 df3 合并,并从 df3 的最后一个索引行(即从 13924 行)依次添加索引
标签: python pandas dataframe time-series candlestick-chart