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



假设给定的数据帧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.apply处理两列时与Series:类似

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

相关内容

最新更新