如何使数据框日期列中的日期格式相同? [复制]

Posted

技术标签:

【中文标题】如何使数据框日期列中的日期格式相同? [复制]【英文标题】:How to make the format of dates same in the date column of a data frame? [duplicate] 【发布时间】:2021-12-02 13:04:44 【问题描述】:

我有车站明智的排放数据框df。日期(我从现有的.csvfile 导入)格式不规则。下面是一个示例数据框:

> df
  Station       Date Discharge
1       A 1981-01-01       0.1
2       A 1981-02-01       0.0
3       B 1981-03-01       0.0
4       B 1981-04-01       0.0
5       B 1/13/1981        0.4
6       C 1/14/1981        0.2
7       D 1/15/1981        0.6
8       D 1981-16-01       0.1
9       D 1981-17-01       0.5

由于这种数据的进一步处理是困难的。我尝试了以下方法:

> df$Date <- as.Date(df$Date, "%m/%d/%Y")
> df
  Station       Date Discharge
1       A 1981-01-01       0.1
2       A 1981-02-01       0.0
3       B 1981-03-01       0.0
4       B 1981-04-01       0.0
5       B NA               0.4
6       C NA               0.2
7       D NA               0.6
8       D 1981-16-01       0.1
9       D 1981-17-01       0.5

正在引入 NA。如何使所有日期的格式相同。将日期设为d-m-y 格式会很好。任何指导表示赞赏。谢谢。

【问题讨论】:

【参考方案1】:

您可以先使用lubridate::parse_date_time 获取标准格式的数据。函数中可以传递多种格式。

lubridate::parse_date_time(df$Date, c('Ydm', 'mdY'))

#[1] "1981-01-01 UTC" "1981-01-02 UTC" "1981-01-03 UTC" "1981-01-04 UTC" "1981-01-13 UTC"
#[6] "1981-01-14 UTC" "1981-01-15 UTC" "1981-01-16 UTC" "1981-01-17 UTC"

然后使用format 以您希望的任何格式获取数据。

format(lubridate::parse_date_time(df$Date, c('Ydm', 'mdY')), '%d-%m-%Y')

#[1] "01-01-1981" "02-01-1981" "03-01-1981" "04-01-1981" "13-01-1981" "14-01-1981"
#[7] "15-01-1981" "16-01-1981" "17-01-1981"

请注意,format 的输出是类字符而不是日期。日期在 R 中只能有一种格式,即Ymd

as.Date(lubridate::parse_date_time(df$Date, c('Ydm', 'mdY')))

#[1] "1981-01-01" "1981-01-02" "1981-01-03" "1981-01-04" "1981-01-13" "1981-01-14"
#[7] "1981-01-15" "1981-01-16" "1981-01-17"

【讨论】:

以上是关于如何使数据框日期列中的日期格式相同? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用熊猫更改数据框中的日期时间格式? [复制]

如何更改同一列中的多个日期格式?

删除微秒并使日期时间列中的秒数为零?

如何更改 Pandas 数据框中的日期格式? [复制]

如何根据列中的最新日期聚合 pandas 数据框中的行?

为啥我不能从我的 DataFrame 中的“日期”列中提取月份的列? [复制]