我有多个格式为 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/