如何在python中将datetimeindex更改为只包含日期

2024-10-04 03:26:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为date的列,其中包含以下值

> DatetimeIndex(['2014-02-19'], dtype='datetime64[ns]', freq=None)
> DatetimeIndex(['2013-02-29'], dtype='datetime64[ns]', freq=None)
> DatetimeIndex(['2018-04-15'], dtype='datetime64[ns]', freq=None)

如何修改该列以只提取日期值,并去掉DatetimeIndex和方括号等词

> 2014-02-19
> 2013-02-19
> 2018-04-15
 

我认为我写的代码非常不正确,但仍然附加在这里:

def fundate(x):
    return x[0][0]

df['date'] = df.apply(lambda row : fundate(row['date']), axis = 1)

谁能帮帮我吗


Tags: 代码nonedfdatereturndefrowapply
3条回答

如果存在对象DatetimeIndex,请使用:

df['date'] = df['date'].str[0]

如果每行有多个值:

df = df.explode('date')

如果有字符串且每行只有一个值:

df["date"] = df["date"].str.extract(r"(\d{4}-\d{2}-\d{2})", expand=False)

如果可能,每行多个EL值:

df["date"] = df["date"].str.findall(r"(\d{4}-\d{2}-\d{2})")
df = df.explode('date')

你是说像这样的东西(未经测试)

def fundate(x):
    return x.strftime("%Y-%m-%d")

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.dt.strftime.html

我想这就是你想要的。它从索引中选择第一项并将其更改为字符串

df['new_column'] = df['date'].apply(lambda x: x[0].strftime("%Y-%m-%d"))

相关问题 更多 >