我有if (argc == 2){
std::ofstream outputStream(argv[1]);
write(outputStream);
}
else{
write(std::cout);
}
格式的多列,我想用一行(最好是向量化的)代码将它们全部转换为yyyy-mm-dd hh:mm:ss
格式。
在R中,我将按照以下方式进行操作:
yyyy-mm-dd
我想避免对每一列都单独执行此操作。到目前为止,我只能想到以下简单的解决方案:
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
。
答案 0 :(得分:1)
# 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
答案 1 :(得分:1)
您可以使用select_dtypes
仅选择datetime
dtype列和stack
,转换为dt.date
和unstack
并更新回df
df.update(df.select_dtypes('datetime').stack().dt.date.unstack())