【发布时间】:2020-04-04 18:22:01
【问题描述】:
我有四个具有不同数据的数据框(假设在某些情况下,每个数据框的列可能相同)。
数据框df0 df1 df3 df4
df0
amountC1 directionC1 index_priceC1 instrument_nameC1 ivC1 priceC1 timestampC1 trade_idC1 trade_seqC1
3 sell 6592.88 BTC-10APR20-7000-C 115.34 0.0675 26-03-2020 08:34 69925302 1
0.1 buy 6688.46 BTC-10APR20-7000-C 112.57 0.07 26-03-2020 17:03 69971504 2
10 sell 6806.04 BTC-10APR20-7000-C 114.33 0.077 27-03-2020 03:11 70020981 3
0.1 sell 6788.24 BTC-10APR20-7000-C 113.92 0.0755 27-03-2020 04:47 70027722 4
1.5 sell 6686.07 BTC-10APR20-7000-C 113.98 0.069 27-03-2020 05:20 70036646 5
0.5 buy 6708.57 BTC-10APR20-7000-C 105.29 0.0635 27-03-2020 08:04 70053020 6
df1
amountC2 directionC2 index_priceC2 instrument_nameC2 ivC2 priceC2 timestampC2 trade_idC2 trade_seqC1
3 sell 6592.88 BTC-10APR20-7200-C 110.34 0.0675 26-03-2020 08:39 69925302 1
0.1 buy 6688.46 BTC-10APR20-7200-C 112.57 0.07 26-03-2020 17:03 69971504 2
10 sell 6806.04 BTC-10APR20-7200-C 114.33 0.077 27-03-2020 03:11 70020981 3
0.1 sell 6788.24 BTC-10APR20-7200-C 110.92 0.0755 27-03-2020 04:47 70027722 4
1.5 sell 6686.07 BTC-10APR20-7200-C 113.98 0.069 27-03-2020 05:20 70036646 5
0.5 buy 6708.57 BTC-10APR20-7000-C 105.29 0.0635 27-03-2020 08:04 70053020 6
0.5 buy 6708.57 BTC-10APR20-7000-C 105.29 0.0635 27-03-2020 08:04 70053020 7
我希望明智地执行此数据框列的合并或连接,下面是我希望得到的输出
amountC1 block_trade_idC1 directionC1 index_priceC1 instrument_nameC1 ivC1 priceC1 tick_directionC1 timestampC1 trade_idC1 trade_seqC1 amountC2 directionC2 index_priceC2 instrument_nameC2 ivC2 priceC2 tick_directionC2 timestampC2 trade_idC2 trade_seqC2
3 sell 6592.88 BTC-10APR20-7000-C 115.34 0.0675 1 26-03-2020 08:34 69925302 1 5 sell 6607.04 BTC-10APR20-7250-C 116.75 0.057 1 46:41.0 69926125 1
0.1 buy 6688.46 BTC-10APR20-7000-C 112.57 0.07 0 26-03-2020 17:03 69971504 2 0.1 buy 6685.48 BTC-10APR20-7250-C 112.7 0.057 1 03:31.7 69971444 2
10 sell 6806.04 BTC-10APR20-7000-C 114.33 0.077 0 27-03-2020 03:11 70020981 3 0.2 sell 6708.99 BTC-10APR20-7250-C 104.17 0.05 2 22:40.0 70054437 3
0.1 sell 6788.24 BTC-10APR20-7000-C 113.92 0.0755 2 27-03-2020 04:47 70027722 4 0.5 buy 6703.15 BTC-10APR20-7250-C 101.21 0.0475 2 27:01.8 70054899 4
1.5 sell 6686.07 BTC-10APR20-7000-C 113.98 0.069 2 27-03-2020 05:20 70036646 5 0.5 sell 6709.54 BTC-10APR20-7250-C 94.8 0.043 2 42:11.6 70056479 5
0.5 buy 6708.57 BTC-10APR20-7000-C 105.29 0.0635 2 27-03-2020 08:04 70053020 6 0.5 buy 6710.71 BTC-10APR20-7250-C 95.39 0.0435 0 42:47.1 70056546 6
0.5 buy 6713.7 BTC-10APR20-7000-C 102.11 0.0615 2 20:06.1 70054217 7 0.5 buy 6699.43 BTC-10APR20-7250-C 90.78 0.0395 2 23:36.3 70059362 7
0.2 sell 6704.46 BTC-10APR20-7000-C 102.2 0.061 2 27:02.5 70054901 8 0.5 buy 6699.43 BTC-10APR20-7250-C 90.78 0.0395 3 23:36.3 70059363 8
0.5 buy 6691.95 BTC-10APR20-7250-C 89.92 0.0385 2 32:55.2 70059866 9
0.5 buy 6697.59 BTC-10APR20-7250-C 90.27 0.039 0 35:42.4 70060036 10
我试过这个方法
df = pd.concat([df0,df1,df3,df4], ignore_index=True)
df = [df0, df1, df3, df4]
两者都在下方一一添加数据框。
我想要每个数据框列右侧的副本。 无需进行任何列匹配,只需合并或加入即可。
如何使用 pandas 数据框来实现这一点?
请注意 df1 df2 等数据帧数据必须从后到前填写,以保持所有时间帧的最近数据具有价值。 例子 df0 总共有 800 条记录 df1 有 250 条,df2 有 200 条记录,所以在这有 df1 数据必须从记录号 550 t0 800 填充 df2 数据必须从记录号 600 填充到 800 以便我将有数据来绘制所有数据帧的最近价格变化
如何通过合并和加入来做到这一点
【问题讨论】:
-
使用 pd.concat 和 axis=1 参数。
pd.concat([df1, df2, df3], axis=1) -
嗨马克思巴布!查看此 SO 线程以获取有关改进 pandas 问题的提示:link。总体思路:如果您这样做是为了让我们可以将您的 DataFrame 复制粘贴到 python 脚本中,那么回答您的问题会容易得多。有时这意味着创建更小且更易于使用的示例 DataFrame。
-
确定我现在会做,要求更新了
标签: python pandas dataframe pandas-groupby