Pandas 将字符串列转换为日期时间

Pandas 将字符串列转换为日期时间,pandas,datetime,timestamp,Pandas,Datetime,Timestamp,我知道这个问题被问了好几次,我仔细检查了答案,但是我找不到解决问题的方法 我有两列时间,一列是时间,一列是日期。我想要实现的是有一个合并列,即timestamp列 A列如下所示 0 "3.11.20" 1 "3.11.20" 2 "3.11.20" 3 "3.11.20" 4 "3.11.20" 1087 "5.1

我知道这个问题被问了好几次,我仔细检查了答案,但是我找不到解决问题的方法

我有两列时间,一列是时间,一列是日期。我想要实现的是有一个合并列,即timestamp列

A列如下所示

0       "3.11.20"
1       "3.11.20"
2       "3.11.20"
3       "3.11.20"
4       "3.11.20"
   
1087    "5.11.20"
1088    "5.11.20"
1089    "5.11.20"
1090    "5.11.20"
1091    "5.11.20"
0       "11:38:48"
1       "11:39:44"
2       "11:41:35"
3       "11:42:31"
4       "11:43:27"
   
1087    "14:51:10"
1088    "14:52:01"
1089    "14:52:53"
1090    "14:53:44"
1091    "14:54:36"
B列如下所示

0       "3.11.20"
1       "3.11.20"
2       "3.11.20"
3       "3.11.20"
4       "3.11.20"
   
1087    "5.11.20"
1088    "5.11.20"
1089    "5.11.20"
1090    "5.11.20"
1091    "5.11.20"
0       "11:38:48"
1       "11:39:44"
2       "11:41:35"
3       "11:42:31"
4       "11:43:27"
   
1087    "14:51:10"
1088    "14:52:01"
1089    "14:52:53"
1090    "14:53:44"
1091    "14:54:36"
我的第一个方法是跟随,输出如下

df["Timestamp"]=pd.to_datetime(df["colA"]+" "+df["colB"])


Unknown string format: "3.11.20" "11:38:48"
所以我的下一个方法是对每一列进行单独的转换以检查错误,并得到以下错误

pd.to_datetime(raw_data["colA"],
                     format="%d.%m.%y")

time data '"3.11.20"' does not match format '%d.%m.%y' (match)
对于将这些字符串列转换为datetime格式时遇到如此多的问题,我感到非常惊讶。如果您能给我提些建议,我将不胜感激。我假设这可能是由于填充了零

使用带
的格式“
值,用于将错误值转换为
NaT
,用于缺少日期时间的值:

df["Timestamp"]=pd.to_datetime(df["colA"]+df["colB"], 
                               format='"%d.%m.%y""%H:%M:%S"',
                               errors='coerce')
或通过以下方式删除



如果您在参数中使用read_csv,请在使用代码之后使用parse_dates=[['colA','colB']]

df["Timestamp"]=pd.to_datetime(df["colA"]+" "+df["colB"])
资料

解决方案

剥下
并使用
.str.cat
进行连接。使用.pd.to\u datetime强制到datetime

df['timestamp']=pd.to_datetime(df['ColumnA'].str.strip('"').str.cat(df['ColumnB'].str.strip('"'), sep=' '), format="%d.%m.%y %H:%M:%S")

      ColumnA     ColumnB           timestamp
0     "3.11.20"  "11:38:48" 2020-11-03 11:38:48
1     "3.11.20"  "11:39:44" 2020-11-03 11:39:44
2     "3.11.20"  "11:41:35" 2020-11-03 11:41:35
3     "3.11.20"  "11:42:31" 2020-11-03 11:42:31
4     "3.11.20"  "11:43:27" 2020-11-03 11:43:27
1087  "5.11.20"  "14:51:10" 2020-11-05 14:51:10
1088  "5.11.20"  "14:52:01" 2020-11-05 14:52:01
1089  "5.11.20"  "14:52:53" 2020-11-05 14:52:53
1090  "5.11.20"  "14:53:44" 2020-11-05 14:53:44
1091  "5.11.20"  "14:54:36" 2020-11-05 14:54:36

也尝试了许多尝试之一。但是,它不起作用。请尝试将日期值的分隔符更改为“-”或“/”。替换(“.”,“-”)为example@SMS-很抱歉,出现了错误
,现已测试并运行良好。如果我应用您的第二个选项,我将获得以下错误时间数据“(null)(null)”与格式“%d.%m.%y%H:%m:%S”(匹配)@SMS-我得到了它,有一些错误的数据,请添加
errors='concurve'
,以便将它们转换为
NaT
-在pandas中缺少datetime的值。答案已编辑。非常感谢。事实上,数据中有一个该死的空值。你救了我的命:)
df['timestamp']=pd.to_datetime(df['ColumnA'].str.strip('"').str.cat(df['ColumnB'].str.strip('"'), sep=' '), format="%d.%m.%y %H:%M:%S")

      ColumnA     ColumnB           timestamp
0     "3.11.20"  "11:38:48" 2020-11-03 11:38:48
1     "3.11.20"  "11:39:44" 2020-11-03 11:39:44
2     "3.11.20"  "11:41:35" 2020-11-03 11:41:35
3     "3.11.20"  "11:42:31" 2020-11-03 11:42:31
4     "3.11.20"  "11:43:27" 2020-11-03 11:43:27
1087  "5.11.20"  "14:51:10" 2020-11-05 14:51:10
1088  "5.11.20"  "14:52:01" 2020-11-05 14:52:01
1089  "5.11.20"  "14:52:53" 2020-11-05 14:52:53
1090  "5.11.20"  "14:53:44" 2020-11-05 14:53:44
1091  "5.11.20"  "14:54:36" 2020-11-05 14:54:36