给定合并三个数据帧的代码:
raw_data = {
'type': [0, 1, 1],
'id': ['3', '4', '5'],
'name_1': ['Alex', 'Amy', 'Allen']}
df_a = pd.DataFrame(raw_data, columns = ['type', 'id', 'name_1' ])
df_a.set_index(['type', 'id'])
raw_datab = {
'type': [1, 1, 1, 0],
'id': ['4', '5', '5', '7'],
'name_2': ['Billy', 'Brian', 'Joe', 'Bryce']}
df_b = pd.DataFrame(raw_datab, columns = ['type', 'id', 'name_2'])
df_b.set_index(['type', 'id'])
raw_datac = {
'name_3': ['School', 'White', 'Jane', 'Homer'],
'id': ['4', '6', '5', '5'],
'type': [1, 1, 1, 1]}
df_c = pd.DataFrame(raw_datac, columns = ['name_3', 'id', 'type' ])
df_c.set_index(['type', 'id'])
dfx = df_a.merge(df_b, how='outer').merge(df_c, how='outer')
print(dfx)
我得到以下回应:
type id name_1 name_2 name_3
0 0 3 Alex NaN NaN
1 1 4 Amy Billy School
2 1 5 Allen Brian Jane
3 1 5 Allen Brian Homer
4 1 5 Allen Joe Jane
5 1 5 Allen Joe Homer
6 0 7 NaN Bryce NaN
7 1 6 NaN NaN White
我真正需要的是得到,结果是,按原始顺序连接列。例如:
type id name_1 type_2 id_2 name_2 name_3 id_3 type_3
0 3 Alex 0 3 NaN NaN 3 0
1 4 Amy 1 4 Billy School 4 1
1 5 Allen 1 5 Brian Jane 5 1
1 5 Allen 1 5 Brian Homer 5 1
1 5 Allen 1 5 Joe Jane 5 1
1 5 Allen 1 5 Joe Homer 5 1
0 7 NaN 0 7 Bryce NaN 7 0
1 6 NaN 1 6 NaN White 6 1
这对熊猫有可能吗?你知道吗
我想你可以这样做:
让我们使用以下语法将列的“副本”添加到每个数据帧的索引中
注意:
df.set_index('Col1')
vsdf.set_index(df['Col1'])
,后面的语法在索引中创建Col1的副本,其中前者将Col1列移动到索引中。你知道吗现在,让我们使用how='outer'将索引上的数据帧合并在一起,并使用
suffixes
处理重复的列命名:输出:
编辑:因为我们正在合并索引,所以可以使用
join
。你知道吗相关问题 更多 >
编程相关推荐