python - 同时将多列的类型从日期时间更改为日期(pandas)

标签 python pandas date datetime

我有多个格式为 yyyy-mm-dd hh:mm:ss 的列,我想将它们全部转换为 yyyy-mm-dd 格式一行(最好是矢量化的)代码。

在 R 中,我会做一些类似的事情:

df[, c("col1", "col2") := list(col1 = as.Date(col1), col2 = as.Date(col2))]

我想避免为每一列单独执行此操作。到目前为止我只能想到以下简单的解决方案:

df["col1"] = df["col1"].dt.date
df["col2"] = df["col2"].dt.date

所以我有两个问题:如何在一行代码中操作多个列以及如何将 datetime 对象转换为 date

最佳答案

# sample data
df = pd.DataFrame({
    'a': np.random.choice(pd.date_range("2019-01-01", "2019-12-31", freq="2H").strftime('Y%-%m-%d %H:%M:%S'), size=5),
    'b': np.random.choice(pd.date_range("2019-01-01", "2019-12-31", freq="2H").strftime('Y%-%m-%d %H:%M:%S'), size=5),
    'c': np.random.choice(pd.date_range("2019-01-01", "2019-12-31", freq="2H").strftime('Y%-%m-%d %H:%M:%S'), size=5)
})

df.loc[:, 'a':'c'] = df.loc[:, 'a':'c'].apply(lambda x: pd.to_datetime(x).dt.date)
    a           b           c 
0   2019-04-19  2019-08-11  2019-11-01
1   2019-04-02  2019-07-04  2019-08-29
2   2019-03-02  2019-06-02  2019-11-25
3   2019-08-22  2019-04-27  2019-04-28
4   2019-05-10  2019-09-21  2019-12-07

关于python - 同时将多列的类型从日期时间更改为日期(pandas),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57466050/

相关文章:

python - 完整的 conda-forge channel 网址是什么?

python - 需要登录 Django Channels 套接字吗?

python - 将浮点值更改为整数值,然后在 Pandas 数据框中连接

time-series - 如何更改数据框列中的日期格式。

javascript - 在 JavaScript 中获取日期

python - 用PIL保存后图像颜色发生变化

python - 多标签分类中的 roc_curve 有斜率

python - Airflow 1.10.9 - 无法从 '_check_google_client_version' 导入名称 'pandas_gbq.gbq'

python - 遍历 Pandas 系列时出错

javascript - MomentJS 范围并不总是包括日期范围中的当前月份