将具有特定格式的'Date'和'Time'列合并到'Date_Time'列中 熊猫



我有一个df,TimeDate列在这个特定的格式。

Time    Date
213919  220806
220905  220806
225351  220806
4101    220806
12037   220806

Time的格式为:hhmmss

Time的格式有点奇怪,必须从末尾开始读取,为了完成6的数字,必须在开头加上0,例如410100:41:01,而1203701: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_datetimedt.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

最新更新