[英]merge two dataframes by row with same index 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
我到目前为止尝试过这个但是这似乎不起作用:
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
选项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
df2
也许这个解决方案也可以解决你的问题:
df3 = pd.concat([df1,df2]).sort_index()
print df3
Out[42]:
A B C D
DATE1 a1 b1 c1 d1
DATE1 f1 g1 h1 i1
DATE2 a2 b2 c2 d2
DATE2 f2 g2 h2 i2
DATE3 a3 b3 c3 d3
DATE3 f3 g3 h3 i3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.