我现在做一个项目,遇到了pandas格式转换的问题,现在求助大家。我的需求是在表Y中找到两个指定的元素,然后相减,得到差值。但是指定的元素中为字符串格式(这个还不确定,问题就处在这!),我要先转换为时间格式(原字符串里面小时只有一位)。
如下为我的代码:
domesticdf1['DPCODE-RSTARTTIME-time'] = domesticdf1['DPCODE-RSTARTTIME-time'].astype(str)
for name,group in domesticdf1.groupby('FLIGHTID1'):#对每个FLIGHTID1的结果进行迭代,name为FLIGHTID1的字符串
for name1,group1 in domesticdf1.groupby('ASSOCIATEDFLIGHTID'):
if name == name1:
Y = group.append(group1)
t1 = datetime.strptime(Y.loc[Y.DISPCODE=='6.0','DPCODE-RSTARTTIME-time'],'%H:%M:%S')
t2 = datetime.strptime(Y.loc[Y.DISPCODE=='5.0','DPCODE-RSTARTTIME-time'],'%H:%M:%S')
利用loc我找到了表Y中DISPCODE中字符串为6.0的那一行和'DPCODE-RSTARTTIME-time那一列的元素,程序在进入for循环之前已经将'DPCODE-RSTARTTIME-time'这一列转换为str,运行之后报错为:strptime() argument 1 must be str, not Series。类型居然不是字符串
我又做了如下的修改:
t1 = datetime.strptime(str(Y.loc[Y.DISPCODE=='6.0','DPCODE-RSTARTTIME-time']),'%H:%M:%S')
报错为:
time data '313 2:01:01\nName: DPCODE-RSTARTTIME-time, dtype: object' does not match format '%H:%M:%S'
这个的type居然变成了object。我debug模式下加入K = Y.loc[Y.DISPCODE=='6.0','DPCODE-RSTARTTIME-time'],!K的结果输出为Name:DPCODE-RSTARTTIME-time,dtype:object
我陷入了深深的迷茫!!!list5里面分明就是str,为什么用loc获取的时候会变成object,再次利用str转换的时为什么还是不行,大神们,能不能帮帮我。
本人是CSDN会员,可为给予帮助者下载所需材料