首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataFrame的Python Pandas Merge或Join按列排列,不作为行添加到每个数据帧之后

DataFrame的Python Pandas Merge或Join按列排列,不作为行添加到每个数据帧之后
EN

Stack Overflow用户
提问于 2020-04-05 02:22:01
回答 2查看 84关注 0票数 0

我有四个具有不同不同数据的数据帧(假设在某些情况下每个数据帧的列可能是相同的)。

数据帧df0 df1 df3 df4

df0

代码语言:javascript
复制
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

代码语言:javascript
复制
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

我希望按列执行此数据框的合并或连接,下面是我希望获得的输出

代码语言:javascript
复制
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

我试过这种方法

代码语言:javascript
复制
df = pd.concat([df0,df1,df3,df4], ignore_index=True)

df = [df0, df1, df3, df4]

两者都在下面逐个添加数据帧。

我想要每个数据框的副本列的右边。不需要进行任何列匹配,只需合并或连接即可。

如何使用pandas数据帧来实现这一点?

请注意,df1 df2和其他数据帧数据必须从最后到第一次填充,才能保持所有时间帧的最新数据具有值。

如何使用merge和join执行此操作

EN

回答 2

Stack Overflow用户

发布于 2020-04-05 02:26:05

使用pd.concat()axis参数沿列而不是行连接:

代码语言:javascript
复制
import pandas as pd

df1 = pd.DataFrame({
    'Col 1': [1, 2, 3]
})

df2 = pd.DataFrame({
    'Col 2': [4, 5, 6]
})

pd.concat([df1, df2], axis=1)

结果表:

代码语言:javascript
复制
   Col 1  Col 2
0      1      4
1      2      5
2      3      6

参考文献:

票数 0
EN

Stack Overflow用户

发布于 2020-04-05 02:35:10

除了luc的答案之外,您还可以对每个的索引进行合并。例如:

创建示例数据帧df1

代码语言:javascript
复制
import pandas as pd
df1 = pd.DataFrame(columns=["c1","c1a","c1b"], data = [[1,2,3],[4,5,6],[7,8,9]])
print(df1)

# | c1 | c1a | c1b |
# |----|-----|-----|
# | 1  | 2   | 3   |
# | 4  | 5   | 6   |
# | 7  | 8   | 9   |

创建一个示例数据帧df2:

代码语言:javascript
复制
df2 = pd.DataFrame(columns=["c2","c2a","c2b"], data = [["a","b","c"],["d","e","f"],["g","h","i"]])
print(df2)

# | c2 | c2a | c2b |
# |----|-----|-----|
# | a  | b   | c   |
# | d  | e   | f   |
# | g  | h   | i   |

您可以像这样合并这些表:

代码语言:javascript
复制
df3 = df1.merge(df2, left_index=True, right_index=True)
print(df3)

# | c1 | c1a | c1b | c2 | c2a | c2b |
# |----|-----|-----|----|-----|-----|
# | 1  | 2   | 3   | a  | b   | c   |
# | 4  | 5   | 6   | d  | e   | f   |
# | 7  | 8   | 9   | g  | h   | i   |

请注意,这些列是基于索引合并的,保留了df1和df2的原始顺序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61032772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档