【发布时间】:2018-07-06 15:20:12
【问题描述】:
如何将两个 Dataframe 合并为一个,同时保留两个 Dataframe 的所有行和所有索引值?
假设我有两个数据框,索引值部分不同:
df1 = pd.DataFrame(np.random.randn(5, 1), columns=['a'], index=[0, 2, 3, 4, 5])
df2 = pd.DataFrame(np.random.randn(5, 1), columns=['b'], index=[1, 2, 3, 4, 6])
a
0 -1.089084
2 -0.552297
3 -0.242239
4 0.247463
5 -0.139740
b
1 -0.407245
2 1.704591
3 -0.803438
4 -1.511515
6 0.303360
我想创建一个新的数据框,其中包含带有组合索引的两列。我试过了:
df_combine = pd.DataFrame()
df_combine['a'] = df1['a']
df_combine['b'] = df2['b']
导致:
a b
0 -1.089084 NaN
2 -0.552297 1.704591
3 -0.242239 -0.803438
4 0.247463 -1.511515
5 -0.139740 NaN
如果没有可用于此索引值的值,我希望保留所有行和索引值,使用 NaN:
a b
0 -1.089084 NaN
1 NaN -0.407245
2 -0.552297 1.704591
3 -0.242239 -0.803438
4 0.247463 -1.511515
5 -0.139740 NaN
6 NaN 0.303360
【问题讨论】:
-
dd = pd.concat([df1, df2], axis=1)轴选项必须指定。 -
我觉得比较惯用的方式:
df1.join(df2, how='outer')
标签: python pandas dataframe merge