pandas 对齐不同大小的 Dataframe 行[重复]

hl0ma9xz  于 2023-03-28  发布在  其他
关注(0)|答案(2)|浏览(135)

此问题在此处已有答案

Merge two dataframes by index(7个答案)
1年前关闭。
我有多个DataFrames,它们都有不同的大小:

a

标题1标题2
一百一十一项目1项目2
一百一十二项目3项目4
a = pd.DataFrame({
  'Header1': ['item1', 'item3'],
  'Header2': ['item2', 'item4']
}).set_index(pd.Index([111, 112]))

B

标题3标题4
一百一十一项目五项目6
一百一十一项目7项目8
一百一十一项目9项目10
一百一十二项目11项目12
一百一十二项目13项目14
一百一十二项目15项目16
b = pd.DataFrame({
  'Header3': ['item5', 'item7', 'item9', 'item11', 'item13', 'item15'],
  'Header4': ['item6', 'item8', 'item10', 'item12', 'item14', 'item16']
}).set_index(pd.Index([111, 111, 111, 112,  112, 112]))

我想像这样连接这两个DataFrame:

c

标题1标题2标题3标题4
一百一十一项目1项目2项目五项目6
一百一十一- -- -项目7项目8
一百一十一- -- -项目9项目10
一百一十二项目3项目4项目11项目12
一百一十二- -- -项目13项目14
一百一十二- -- -项目15项目16

当我将行添加到较小的DataFrame中时,我仍然不知道如何像这样排列行。

n9vozmp4

n9vozmp41#

您可以简单地使用pd.concat,它会自动考虑索引:

c = pd.concat([a, b], axis=1)

输出:

>>> c
    Header1 Header2 Header3 Header4
111   item1   item2   item5   item6
111   item1   item2   item7   item8
111   item1   item2   item9  item10
112   item3   item4  item11  item12
112   item3   item4  item13  item14
112   item3   item4  item15  item16
zte4gxcn

zte4gxcn2#

假设Header1Header2中的破折号表示填充相同的值,则joinab最简单:

c = a.join(b)

#     Header1 Header2 Header3 Header4
# 111   item1   item2   item5   item6
# 111   item1   item2   item7   item8
# 111   item1   item2   item9  item10
# 112   item3   item4  item11  item12
# 112   item3   item4  item13  item14
# 112   item3   item4  item15  item16

相关问题