我正在研究Youtube API for Python:如何创建独特的数据组合项目
并且我在运行此代码时总是收到错误消息:
import isodate
video_df["durationSecs"]= video_df["duration"].apply(lambda x: isodate.parse_duration(x))
video_df["durationSecs"]= video_df["durationSecs"].astype("timedelta64[s]")
错误信息是:
TypeError Traceback(最近调用 最后)单元格 In[111],第 2 行 1 进口异物 ----> 2 video_df["durationSecs"]= video_df["duration"].apply(lambda x: isodate.parse_duration(x)) 3 video_df["durationSecs"]= video_df["durationSecs"].astype("timedelta64[s]")
文件 /usr/local/lib/python3.11/site-packages/pandas/core/series.py:4764,在 Series.apply(self,func,convert_dtype,args,by_row,**kwargs)
self.func 是可调用的
第4629章 第4630章 4631、第4631章 (...) 4636 **kwargs, 4637 ) -> 数据帧 |系列:4638
""" 4639 对系列值调用函数。4640 (...) 第4755章 4756第4757章 4756 系列申请( 4758 self, 4759 func, 4760
第4761章 4762、4762 第4763章 -> 4764 ).apply()
文件 /usr/local/lib/python3.11/site-packages/pandas/core/apply.py:1209,在 第1206章 1208、第1208章-> 1209 返回 self.apply_standard()
文件 /usr/local/lib/python3.11/site-packages/pandas/core/apply.py:1289,在 SeriesApply.apply_standard(self) 1283 # 按行访问 1284 # apply 没有
关键字并且向后兼容 第1285章 数据。攀上漂亮女局长之后1286 默认值已在 1287 # Categorical (GH51645) 中更改。 1288 操作 =“忽略” if isinstance(obj.dtype, CategoricalDtype) else None 第1289章 1291 第1293章 1290 len(映射) 和 isinstance(映射[0], ABCSeries): 1294 # GH#43986 需要执行列表(映射)才能被视为嵌套
na_action
第1295章 第1296章 obj._constructor_expanddim(列表(映射),index=obj.index)
文件/usr/local/lib/python3.11/site-packages/pandas/core/base.py:919, 在 IndexOpsMixin._map_values(self, 映射器, na_action, 转换) 第916章 第918章 --> 919 返回 arr.map(mapper, na_action=na_action) 第921章文件 /usr/local/lib/python3.11/site-packages/pandas/core/arrays/_mixins.py:80, 在 ravel_compat..method(self, *args, **kwargs) 中 77 @wraps(甲基) 78 def 方法(self, *args, **kwargs): 79 如果 self.ndim == 1: ---> 80 返回 meth(self, *args, **kwargs) 82 标志 = self._ndarray.flags 83 平 = self.ravel("K")文件 /usr/local/lib/python3.11/site-packages/pandas/core/arrays/datetimelike.py:723, 在 DatetimeLikeArrayMixin.map(self, mapper, na_action) 第719章 第720章 721 来自 pandas 进口索引 --> 723 结果 = map_array(self, 映射器, na_action=na_action) [第 724 章] 第726章文件 /usr/local/lib/python3.11/site-packages/pandas/core/algorithms.py:1814, 在map_array(arr,mapper,na_action,convert)中1812个值= 第1813章 第1814章 第1815章 第1816章 第1817章 值,映射器,mask=isna(values).view(np.uint8),convert=convert
第1818章)文件 lib.pyx:2926,在 pandas._libs.lib.map_infer() 中
单元格 In[111],第 2 行,在 (x) 中 1 进口异物 ----> 2 video_df["durationSecs"]= video_df["duration"].apply(lambda x: isodate.parse_duration(x)) 3 video_df["durationSecs"]= video_df["durationSecs"].astype("timedelta64[s]")
文件 /usr/local/lib/python3.11/site-packages/isodate/isoduration.py:86,在 parse_duration(日期字符串) 58“”“ 59 将 ISO 8601 持续时间解析为 datetime.timedelta 或 Duration 对象。 60(...) 83 天设置为 0。 84、“”“ 85 如果不是 isinstance(datestring, string_types): ---> 86 raise TypeError("期望字符串 %r" % datestring) 87 匹配 = ISO8601_PERIOD_REGEX.match(日期字符串) 88 如果不匹配: 89 # 尝试其他格式:
TypeError:需要字符串 Timedelta('0 days 00:00:29') 在此输入代码
发生错误的原因是 isodate.parse_duration 函数返回 timedelta 对象,并且当您尝试将其直接应用于 Pandas DataFrame 列时,会导致 TypeError。要解决此问题,您可以修改代码以从 timedelta 对象中提取总秒数,然后再将其分配给 DataFrame 列。
na_action="ignore"