2

I have multiple DataFrames and they all have different sizes:

a = 
           | Header1 | Header2
| -------- | --------|---------
| 111      | item1   | item2 
| 112      | item3   | item4   
b = 
           | Header3 | Header4
| -------- | --------|---------
| 111      | item5   | item6 
| 111      | item7   | item8   
| 111      | item9   | item10 
| 112      | item11  | item12
| 112      | item13  | item14 
| 112      | item15  | item16 

I would like to concatenate these two DataFrames like this:

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

When I add rows into the smaller DataFrames I still don't know how to line up the rows like this.

tdy
  • 26,545
  • 9
  • 43
  • 50
Po Chen Liu
  • 241
  • 2
  • 12

2 Answers2

1

You can simply use pd.concat, which automatically takes indexes into account:

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

Output:

>>> 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
richardec
  • 14,202
  • 6
  • 23
  • 49
1

Assuming the dashes in Header1 and Header2 represent filling the same values, it's simplest to join a and b:

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
tdy
  • 26,545
  • 9
  • 43
  • 50