DataFrame A と DataFrame B に year
と month
の column を追加し、この columnを使用して、df.update()
もしくは pd.merge()
を行うとよいと思います。
以下に df.update()
を使用したサンプルを書いてみましたので参考にしてください。
Python
1import pandas as pd
2
3# df_A を生成
4df_A = pd.DataFrame(
5 [['1990-01-01', 'a', 2],
6 ['1990-01-02', 'b', 4],
7 ['1991-01-03', 'c', 3],
8 ['1990-02-07', 'b', 4],
9 ['1990-04-11', 'v', 6]], columns=['date', 'C', 'D'])
10df_A['date'] = pd.to_datetime(df_A['date'])
11
12# df_B を生成
13df_B = pd.DataFrame(
14 [['1990-01-01', 'ddd', 12],
15 ['1990-02-01', 'ggg', 41],
16 ['1990-03-01', 'jjj', 33]], columns=['date', 'C', 'E'])
17df_B['date'] = pd.to_datetime(df_B['date'])
18
19# df_A に 'year' と 'month' のColumnを追加
20df_A['year'] = df_A.date.dt.year
21df_A['month'] = df_A.date.dt.month
22
23# df_B に 'year' と 'month' のColumnを追加
24df_B['year'] = df_B.date.dt.year
25df_B['month'] = df_B.date.dt.month
26
27# df_Aに対し 'year' と 'month' をindex に設定した df_left を作成
28df_left = df_A.set_index(['year', 'month'])
29
30# df_Bに対し 'year' と 'month' をindex に設定した df_right を作成
31# また、df_leftの 'date'を上書きしないように削除しておく
32df_right = df_B.set_index(['year', 'month']).drop('date', axis=1)
33
34# df_right を df_left にて update()
35df_left.update(df_right)
36
37# index('year', 'month')をリセットして削除
38result = df_left.reset_index(drop=True)
39print(result)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。