我在项目中遇到麻烦

问题描述 投票:0回答:0

我正在研究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)
第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章

self.func 是可调用的

-> 1209 返回 self.apply_standard()

文件 /usr/local/lib/python3.11/site-packages/pandas/core/apply.py:1289,在 SeriesApply.apply_standard(self) 1283 # 按行访问 1284 # apply 没有

na_action

关键字并且向后兼容 第1285章 数据。攀上漂亮女局长之后1286 默认值已在 1287 # Categorical (GH51645) 中更改。 1288 操作 =“忽略” if isinstance(obj.dtype, CategoricalDtype) else None 第1289章 1291 第1293章 1290 len(映射) 和 isinstance(映射[0], ABCSeries): 1294 # GH#43986 需要执行列表(映射)才能被视为嵌套

第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"

python pandas statistics youtube-api
© www.soinside.com 2019 - 2024. All rights reserved.