Pandas 将字符串列转换为日期时间
我知道这个问题被问了好几次,我仔细检查了答案,但是我找不到解决问题的方法 我有两列时间,一列是时间,一列是日期。我想要实现的是有一个合并列,即timestamp列 A列如下所示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
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