1
>>> df1
      day       holiday     importance
0   2020-06-02       0      1
1   2020-06-12       0      2
2   2020-06-23       0      1
3   2020-06-25       0      3
4   2020-07-01       0      1
5   2020-07-13       0      3
6   2020-07-30       0      2
7   2020-08-03       0      3

>>> df2
         day   holidayname
0  2020-06-02  A
0  2020-07-01  B
0  2020-08-03  C

and I want to modify the value of column[holiday] in df1 according to df2.

The expected output would be:

>>> df1
      day       holiday     importance
0   2020-06-02       1      1
1   2020-06-12       0      2
2   2020-06-23       0      1
3   2020-06-25       0      3
4   2020-07-01       1      1
5   2020-07-13       0      3
6   2020-07-30       0      2
7   2020-08-03       1      3

I have tried

mask = df1.merge(df2, how='left', indicator=True)['_merge'] == 'both'
df1.loc[mask, 'holiday'] = 1

and got:

>>> df1
      day       holiday     importance
0   2020-06-02       1      1
1   2020-06-12       0      2
2   2020-06-23       0      1
3   2020-06-25       0      3
4   2020-07-01       0      1
5   2020-07-13       0      3
6   2020-07-30       0      2
7   2020-08-03       0      3

so How could I modify all the related rows?

tanglai
  • 161
  • 2
  • 10

0 Answers0