假设给定的数据帧df
包含两个日期类型列start_date
和end_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