【发布时间】:2018-04-12 16:36:25
【问题描述】:
鉴于此代码合并了三个 Pandas 数据框:
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
Pandas 可以做到这一点吗?
【问题讨论】:
-
当您执行这些步骤时:
df_b = pd.DataFrame(raw_data, columns = ['type', 'id', 'name_2' ])您可以更改df_a.columns = ['type_2','id_2','name_2']之后的列名...为每个数据框使用正确的列名,您应该会获得所需的合并结果。 -
是的,成功了
-
很高兴为您提供帮助:)
标签: python python-3.x pandas dataframe