python - 使用相同的索引 pandas 按行合并两个数据帧

标签 python pandas dataframe append concatenation

假设我有以下两个数据帧 X1 和 X2。我想要 按行合并这两个数据帧,以便每个索引 相同的数据框结合了两者的相应行 数据框。

       A  B C  D
DATE1 a1 b1 c1 d1

DATE2 a2 b2 c2 d2

DATE3 a3 b3 c3 d3


       A B  C  D
DATE1 f1 g1 h1 i1

DATE2 f2 g2 h2 i2

DATE3 f3 g3 h3 i3

how would i combine them to get


      A  B  C  D
DATE1 A1 B1 C1 D1
      f1 g1 h1 i1

DATE2 A2 B2 C2 D2
      f2 g2 h2 i2

DATE3 A3 B3 C3 D3
      f3 g3 h3 i3

到目前为止我已经试过了,但这似乎不起作用:

 d= pd.concat( { idx : [ X1[idx], X2[idx]]  for idx, value in appended_data1.iterrows() } , axis =1}

谢谢

最佳答案

选项 1

df3 = df1.stack().to_frame('df1')
df3.loc[:, 'df2'] = df2.stack().values
df3 = df3.stack().unstack(1)
df3

enter image description here


选项 2 广义

idx = df1.stack().index

dfs = [df1, df2]
dflabels = ['df1', 'df2']

a = np.stack([d.values.flatten() for d in dfs], axis=1)
df3 = pd.DataFrame(a, index=idx, columns=dflabels).stack().unstack(1)

设置

from StringIO import StringIO
import pandas as pd


df1_text = """       A  B C  D
DATE1 a1 b1 c1 d1
DATE2 a2 b2 c2 d2
DATE3 a3 b3 c3 d3"""


df2_text = """       F  G H  I
DATE1 f1 g1 h1 i1
DATE2 f2 g2 h2 i2
DATE3 f3 g3 h3 i3"""

df1 = pd.read_csv(StringIO(df1_text), delim_whitespace=True)
df2 = pd.read_csv(StringIO(df2_text), delim_whitespace=True)

df1

enter image description here

df2

enter image description here

关于python - 使用相同的索引 pandas 按行合并两个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39354031/

相关文章:

python - 使用基类处理 django 中的异常

python - 一个 while 循环来向上和向下计数

python - 根据存在(不存在)早于日期的条目过滤 Pandas 数据框的条目

python - 如何删除日期差异大于或小于的行

r - 您将如何查找下一个最接近的值?

python - 在 python 中简单编辑二进制文件

python - 从 pandas 数据帧和相应的时间戳中提取阶段/段

python - 目前 pandas merge 有什么问题吗?

python - 如何根据列条目从 Pandas 数据框中删除随机行?

python - 访问 Pandas 数据框中内部多索引级别的最后一个元素