将日期操作代码转换为函数,然后将其应用于多列

Convert date manipulation code to a function then apply it to multiple columns

假设给定数据框 df 包含两个日期类型列 start_dateend_date,它们都需要使用以下代码进行操作:

df['date'] = df['date'].str.split('d').str[0].add('d')
df['date'] = df['date'].str.replace('Y', '-').str.replace('m', '-').str.replace('d', '')
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d', errors='coerce').dt.date

只是想知道如何将它转换为函数 date_manipulate,如下所示:

def date_manipulate(x):
    return ...

然后将其应用于这两列,感谢您的帮助。

df[['start_date', 'end_date']] = df[['start_date', 'end_date']].apply(date_manipulate)

df['date'] 更改为 x,因为 DataFrame.applySeries:

一样处理两列
def date_manipulate(x):
    x = x.str.split('d').str[0].add('d')
    x = x.str.replace('Y', '-').str.replace('m', '-').str.replace('d', '')
    x = pd.to_datetime(x, format='%Y-%m-%d', errors='coerce').dt.date
    return x

也可以简化代码:

def date_manipulate(x):
    x = x.str.split('d').str[0].add('d')
    x = pd.to_datetime(x, format='%YY%mm%dd', errors='coerce').dt.date
    return x