Home > Software design >  Special kind of dataframes merging — inserting into a dataframe according to date values
Special kind of dataframes merging — inserting into a dataframe according to date values

Time:01-06

df_1 is as follows -

date      id  score
2019-05    5   78.9
2019-06    5   77.5
2019-07    5   80.2
2019-08    5   82.0
2019-05    2   79.9
2019-06    2   69.3
2019-07    2   75.2
2019-08    2   80.0
2019-05    70  68.8
2019-06    70  67.5
2019-07    70  70.2
2019-08    70  86.0

df_2 is as follows -

date      id  score
2019-01    2   79.1
2019-02    2   79.2
2019-03    2   75.2
2019-04    2   80.0
2019-01    5   78.9
2019-02    5   78.5
2019-03    5   80.8
2019-04    5   82.8
2019-01    70  68.4
2019-02    70  72.2
2019-03    70  70.5
2019-04    70  81.0

How can I merge them into one dataframe according to date and id, resulting in -

date      id  score
2019-01    2   79.1
2019-02    2   79.2
2019-03    2   75.2
2019-04    2   80.0
2019-05    2   79.9
2019-06    2   69.3
2019-07    2   75.2
2019-08    2   80.0
2019-01    5   78.9
2019-02    5   78.5
2019-03    5   80.8
2019-04    5   82.8
2019-05    5   78.9
2019-06    5   77.5
2019-07    5   80.2
2019-08    5   82.0
2019-01    70  68.4
2019-02    70  72.2
2019-03    70  70.5
2019-04    70  81.0
2019-05    70  68.8
2019-06    70  67.5
2019-07    70  70.2
2019-08    70  86.0

CodePudding user response:

Use pd.concat:

pd.concat([df_1, df_2]).sort_values(["date", "id"]).reset_index(drop=True)

CodePudding user response:

Concat and sort values

pd.concat([df1, df2]).sort_values(['id', 'date'])

       date  id  score
0   2019-01   2   79.1
1   2019-02   2   79.2
2   2019-03   2   75.2
3   2019-04   2   80.0
4   2019-05   2   79.9
5   2019-06   2   69.3
6   2019-07   2   75.2
7   2019-08   2   80.0
4   2019-01   5   78.9
5   2019-02   5   78.5
6   2019-03   5   80.8
7   2019-04   5   82.8
0   2019-05   5   78.9
1   2019-06   5   77.5
2   2019-07   5   80.2
3   2019-08   5   82.0
8   2019-01  70   68.4
9   2019-02  70   72.2
10  2019-03  70   70.5
11  2019-04  70   81.0
8   2019-05  70   68.8
9   2019-06  70   67.5
10  2019-07  70   70.2
11  2019-08  70   86.0
  • Related