【问题标题】:Python: Combine two Pandas Dataframes, extend index if needed [duplicate]Python:结合两个 Pandas 数据框,如果需要扩展索引 [重复]
【发布时间】: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

【问题讨论】:

标签: python pandas dataframe merge


【解决方案1】:

试试 pandas.concat 函数:https://pandas.pydata.org/pandas-docs/stable/merging.html

dd = pd.concat([df1, df2], axis=1)
print(dd)

输出:

          a         b
0 -0.603074       NaN
1       NaN -0.021821
2  0.501050  0.342474
3 -2.612637 -0.256383
4  0.095779 -1.423016
5 -0.644108       NaN
6       NaN -1.756023

【讨论】:

  • 谢谢,但是我有两次索引值。如果两个索引值匹配,我希望列值在同一行中(请参阅我的问题中的所需输出)
  • 如上图所示,它们排在同一行。
  • 啊,完美!它认为这是解决方案! :-)
  • 很高兴能帮上忙。
猜你喜欢
  • 2017-12-16
  • 2016-07-23
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 2022-01-27
  • 1970-01-01
  • 2017-01-06
  • 2015-04-30
相关资源
最近更新 更多