首页 > 解决方案 > 使用定义的参数创建新列的函数

问题描述

问题是我想不出从上个月的最后一天获得“标记”的方法。因为我需要比较当前月份和上个月是每天生成的一个数字,Mark_LastDayData 以当月最后一天的标记为参考,并在当月的所有值中替换它。'Mark_LastDayDate_PreviousMonth' 4 这就像从上个月获得'Mark_LastDayData',所以我可以在未来进行比较

我有以下 DF

import pandas as pd
from pandas.tseries.offsets import BMonthEnd
import datetime as dt

df = pd.DataFrame({'Found':['A','A','A','A','A','B','B','B'],
           'Date':['14/10/2021','19/10/2021','29/10/2021','30/09/2021','20/09/2021','20/10/2021','29/10/2021','15/10/2021'],
           #'LastDayMonth':['29/10/2021','29/10/2021','29/10/2021','30/09/2021','30/09/2021','29/10/2021','29/10/2021','29/10/2021'],
           'Mark':[1,2,3,4,3,1,2,3]

          })
print(df)

**LastDayMonth 是通过代码获得的 我对日期做了一些更改

df['Date'] = pd.to_datetime(df['Date'])
df['Date'] = pd.to_datetime(df['Date'], format = '%Y/%m/%d')
df['LastDayDate'] = pd.to_datetime(df['Date']) + BMonthEnd(0)
df['LastDayDatePrevMonth'] = pd.to_datetime(df['Date']) - pd.DateOffset(months=1)

在此处输入图像描述

我需要每个日期当月最后一天的“标记”,所以我使用了该方法

df = df.merge(df.loc[df['Date'] == df['LastDayDate'], ['Found','LastDayDate','Mark']],
     on=['Found', 'LastDayDate'],
     how='left', suffixes=['', '_LastDayDate'])

在此处输入图像描述

如何执行此操作以在同一列中获取上个月最后一天的“标记”

我手动填写的示例df

在此处输入图像描述

标签: pythonpandasdataframe

解决方案


推荐阅读