调用add_datepart()拆分pandas日期列触发KeyError如何处理?
错误原因
- 调用
add_datepart()参数使用错误:fastai的add_datepart函数第二个参数接收的是日期列的列名字符串,而非日期列的Series对象。你传入了trainingSetFirstCycle.date(整列日期值),函数会将这组值当做列名在DataFrame中查找,自然找不到对应列,触发KeyError。 pandas.read_csv参数使用错误:read_csv的第二个位置参数是分隔符sep,你额外传入的字典被当做分隔符处理,pandas尝试对字典做编码操作时触发属性报错。你误将本应传给parse_dates的参数放在了错误的位置,且你读取的csv文件本身已经有date字段,不需要额外传入自定义的日期列表。
解决方案
- 先执行正确的数据读取代码,移除多余的字典参数:
import pandas import numpy from fastai.tabular.core import add_datepart trainingSetFirstCycle = pandas.read_csv( "C:/Users/henri/OneDrive/Dokumente/Berufseinstieg/Sprachtechnologie/Predicting_Bike_Rental_Demand/Datasets/train_datetime_split.csv", low_memory=False, parse_dates=["date"] ) trainingSetFirstCycle.rent_count = numpy.log(trainingSetFirstCycle.rent_count)
- 调用
add_datepart时传入日期列的列名字符串即可:
# add_datepart默认会修改原DataFrame,不需要赋值也可以生效,drop=True会删除原date列 add_datepart(trainingSetFirstCycle, "date", drop=True)
内容的提问来源于stack exchange,提问作者Henrike Schwenn
相关产品推荐
相关产品推荐

