我有一个数据集,其中我在数据框中有2列 - YYYY-MM-DD格式的日期和另一列,格式为0100的小时(凌晨1点),直到2300(晚上12点)。
function fetch_sub_menu($sub_menu, $dash = '--'){
foreach($sub_menu as $menu){
echo "<option value='".$menu->cid."'>".$dash.$menu->cname."</option>";
if(!empty($menu->sub)) {
fetch_sub_menu($menu->sub, $dash.'--'); // <-- adding two dashes to $dash
}
}
}
等 为了让它为时间序列模式做好准备,我想将它们转换为datetime对象并连接这些列。所需输出示例:2017-01-01 01:00:00等
我已经尝试Date Hour
2017-01-01 0200
2017-01-01 0400
并将其转换为datetime对象,但我正在努力使用Hour列。请帮忙
答案 0 :(得分:1)
这是一种方式。诀窍是要注意pd.to_datetime
实际上非常灵活:它接受格式的字符串&#34; YYYY-MM-DD HHMM&#34;。
我在这里假设您的小时是以字符串形式给出的(否则无法使用前导零)。
import pandas as pd
df = pd.DataFrame({'Date': ['2017-01-01', '2017-01-01'],
'Hour': ['0200', '0400']})
# as per @COLDSPEED's suggestion
df['DateTime'] = pd.to_datetime(df['Date'] + ' ' + df['Hour'])
print(df)
# Date Hour DateTime
# 0 2017-01-01 0200 2017-01-01 02:00:00
# 1 2017-01-01 0400 2017-01-01 04:00:00
print(df.dtypes)
# Date object
# Hour object
# DateTime datetime64[ns]
# dtype: object
pd.DataFrame.apply
的早期版本可能但效率低下:
df['DateTime'] = df.apply(lambda x: x['Date'] + ' ' + x['Hour'], axis=1)\
.apply(pd.to_datetime)