我有一个df
,Time
和Date
列在这个特定的格式。
Time Date
213919 220806
220905 220806
225351 220806
4101 220806
12037 220806
Time
的格式为:hhmmss
Time
的格式有点奇怪,必须从末尾开始读取,为了完成6
的数字,必须在开头加上0
,例如4101
指00:41:01
,而12037
指01:20:37
Date
的格式为:yymmdd
我想添加一个新的列到我的df
,Date_Time
看起来像这样:
Time Date Date_Time
213919 220806 06/08/2022 21:39:19
220905 220806 06/08/2022 22:09:05
225351 220806 06/08/2022 22:53:51
4101 220806 06/08/2022 00:41:01
12037 220806 06/08/2022 01:20:37
您可以在str.zfill
的帮助下将两列组合为字符串,然后用您的自定义格式传递给to_datetime
和dt.strftime
:
df['Date_Time'] = (pd.to_datetime(df['Date'].astype(str)
+df['Time'].astype(str).str.zfill(6),
format='%y%m%d%H%M%S')
.dt.strftime('%d/%m/%Y %H:%M:%S')
)
输出:
Time Date Date_Time
0 213919 220806 06/08/2022 21:39:19
1 220905 220806 06/08/2022 22:09:05
2 225351 220806 06/08/2022 22:53:51
3 4101 220806 06/08/2022 00:41:01
4 12037 220806 06/08/2022 01:20:37
如果您从csv文件或excel文件加载数据,您可以使用:
df = pd.read_csv('data.csv', parse_dates=[['Date', 'Time']])
print(df)
# Output
Date_Time
0 2006-08-22 21:39:19
1 2006-08-22 22:09:05
2 2006-08-22 22:53:51
3 2006-08-22 00:41:01
4 2006-08-22 01:20:37
如果你不使用parse_dates
参数,你将有:
df = pd.read_csv('data.csv')
print(df)
# Output
Time Date
0 213919 220806
1 220905 220806
2 225351 220806
3 4101 220806
4 12037 220806
输入数据文件:
Time,Date
213919,220806
220905,220806
225351,220806
004101,220806
012037,220806
原始csv中的数字没有填充
def pad_time(x):
return x.zfill(6)
df = pd.read_csv('data.csv', parse_dates=[['Date', 'Time']], converters={'Time': pad_time})
print(df)
# Output
Date_Time
0 2006-08-22 21:39:19
1 2006-08-22 22:09:05
2 2006-08-22 22:53:51
3 2006-08-22 00:41:01
4 2006-08-22 01:20:37