これら2つのデータフレームをマップしようとしましたが、失敗しました。列名とその値が少し異なるためかもしれません。
dfNewのように新しいデータフレームを作成したかったのです。
Employee ID Employee Name Activity Month
A0001 John Smith Apr-19
A0002 Will Cornor Apr-19
A0001 John Smith May-19
A0003 David Teo May-19
A0001 John Smith May-19
A0002 Will Cornor Jun-19
A0001 John Smith Jun-19
Month Bonus
2019-04-01 5000
2019-05-01 4000
2019-06-01 6000
Employee ID Employee Name Activity Month Bonus
A0001 John Smith Apr-19 5000
A0002 Will Cornor Apr-19 5000
A0001 John Smith May-19 4000
A0003 David Teo May-19 4000
A0001 John Smith May-19 4000
A0002 Will Cornor Jun-19 6000
A0001 John Smith Jun-19 6000
のSeries.dt.strftime
fr変更フォーマットを使用するdatetimes
ので、可能Series.map
です:
s = df2.set_index(df2['Month'].dt.strftime('%b-%y'))['Bonus']
df1['Bonus'] = df1['Activity Month'].map(s)
print (df1)
Employee ID Employee Name Activity Month Bonus
0 A0001 John Smith Apr-19 5000
1 A0002 Will Cornor Apr-19 5000
2 A0001 John Smith May-19 4000
3 A0003 David Teo May-19 4000
4 A0001 John Smith May-19 4000
5 A0002 Will Cornor Jun-19 6000
6 A0001 John Smith Jun-19 6000
または、元の列を削除DataFrame.merge
しDataFrame.pop
て新しい列に使用します。
df2['Activity Month'] = df2.pop('Month').dt.strftime('%b-%y')
df1 = df1.merge(df2, on='Activity Month', how='left')
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加