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

uni*_*cel 4 python concatenation append dataframe pandas

假设我有以下两个数据帧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
Run Code Online (Sandbox Code Playgroud)

我到目前为止尝试过这个但是这似乎不起作用:

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

谢谢

piR*_*red 6

选项1

df3 = df1.stack().to_frame('df1')
df3.loc[:, 'df2'] = df2.stack().values
df3 = df3.stack().unstack(1)
df3
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


选项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)
Run Code Online (Sandbox Code Playgroud)

建立

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)
Run Code Online (Sandbox Code Playgroud)
df1
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

df2
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述