add_datepart( ) 产生 KeyError
add_datepart( ) produces KeyError
我正在尝试使用 add_datepart( ) 在 pandas 数据框中拆分日期列。
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)
trainingSetFirstCycle
date time season ... casual registered rent_count
0 2011-01-01 00:00:00 1 ... 3 13 2.772589
1 2011-01-01 01:00:00 1 ... 8 32 3.688879
2 2011-01-01 02:00:00 1 ... 5 27 3.465736
3 2011-01-01 03:00:00 1 ... 3 10 2.564949
4 2011-01-01 04:00:00 1 ... 0 1 0.000000
... ... ... ... ... ... ...
10881 2012-12-19 19:00:00 4 ... 7 329 5.817111
10882 2012-12-19 20:00:00 4 ... 10 231 5.484797
10883 2012-12-19 21:00:00 4 ... 4 164 5.123964
10884 2012-12-19 22:00:00 4 ... 12 117 4.859812
10885 2012-12-19 23:00:00 4 ... 4 84 4.477337
[10886 rows x 13 columns]
trainingSetFirstCycle.dtypes
date datetime64[ns]
但是,运行trainingSetFirstCycle = add_datepart(trainingSetFirstCycle, trainingSetFirstCycle.date, drop=True)
returns这个错误信息:
raise KeyError(f"None of [{key}] are in the [{axis_name}]")
KeyError: "None of [DatetimeIndex(['2011-01-01 00:00:00', '2011-01-01 01:00:00',\n ... dtype='datetime64[ns]', length=10886, freq=None)] are in the [columns]"
我检查了 documentation 看看我做错了什么。
在所示示例中,数据框的定义包括一个由列名“日期”组成的字典和一个包含其前四个值的列表。所以我在自己的数据框中复制了这个:
trainingSetFirstCycle = pandas.read_csv(
"C:/Users/henri/OneDrive/Dokumente/Berufseinstieg/Sprachtechnologie/Predicting_Bike_Rental_Demand/Datasets/train_datetime_split.csv",
{'date': ['2011-01-01', '2011-01-01 ', '2011-01-01', '2011-01-01']}, low_memory=False, parse_dates=["date"])
结果是这条错误消息:
AttributeError: 'dict' object has no attribute 'encode'
.
那么,您知道我在这里缺少什么吗?提前致谢。
通过改写参数“日期”解决
这是一个语义错误。 Python 无法编译 trainingSetFirstCycle = add_datepart(trainingSetFirstCycle, trainingSetFirstCycle.date, drop=True)
因为它没有意识到 trainingSetFirstCycle.date
应该是列的名称。我将参数更改为简单的"date"
,这已经解决了问题。
显然,我的误解是每当你将数据框列作为函数的参数时,你必须将其称为 df.column
,因为那是函数的语法 numpy.log(trainingSetFirstCycle.rent_count)
,其中数据框列“rent_count”,是函数numpy.log
.
的参数
我正在尝试使用 add_datepart( ) 在 pandas 数据框中拆分日期列。
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)
trainingSetFirstCycle
date time season ... casual registered rent_count
0 2011-01-01 00:00:00 1 ... 3 13 2.772589
1 2011-01-01 01:00:00 1 ... 8 32 3.688879
2 2011-01-01 02:00:00 1 ... 5 27 3.465736
3 2011-01-01 03:00:00 1 ... 3 10 2.564949
4 2011-01-01 04:00:00 1 ... 0 1 0.000000
... ... ... ... ... ... ...
10881 2012-12-19 19:00:00 4 ... 7 329 5.817111
10882 2012-12-19 20:00:00 4 ... 10 231 5.484797
10883 2012-12-19 21:00:00 4 ... 4 164 5.123964
10884 2012-12-19 22:00:00 4 ... 12 117 4.859812
10885 2012-12-19 23:00:00 4 ... 4 84 4.477337
[10886 rows x 13 columns]
trainingSetFirstCycle.dtypes
date datetime64[ns]
但是,运行trainingSetFirstCycle = add_datepart(trainingSetFirstCycle, trainingSetFirstCycle.date, drop=True)
returns这个错误信息:
raise KeyError(f"None of [{key}] are in the [{axis_name}]")
KeyError: "None of [DatetimeIndex(['2011-01-01 00:00:00', '2011-01-01 01:00:00',\n ... dtype='datetime64[ns]', length=10886, freq=None)] are in the [columns]"
我检查了 documentation 看看我做错了什么。
在所示示例中,数据框的定义包括一个由列名“日期”组成的字典和一个包含其前四个值的列表。所以我在自己的数据框中复制了这个:
trainingSetFirstCycle = pandas.read_csv(
"C:/Users/henri/OneDrive/Dokumente/Berufseinstieg/Sprachtechnologie/Predicting_Bike_Rental_Demand/Datasets/train_datetime_split.csv",
{'date': ['2011-01-01', '2011-01-01 ', '2011-01-01', '2011-01-01']}, low_memory=False, parse_dates=["date"])
结果是这条错误消息:
AttributeError: 'dict' object has no attribute 'encode'
.
那么,您知道我在这里缺少什么吗?提前致谢。
通过改写参数“日期”解决
这是一个语义错误。 Python 无法编译 trainingSetFirstCycle = add_datepart(trainingSetFirstCycle, trainingSetFirstCycle.date, drop=True)
因为它没有意识到 trainingSetFirstCycle.date
应该是列的名称。我将参数更改为简单的"date"
,这已经解决了问题。
显然,我的误解是每当你将数据框列作为函数的参数时,你必须将其称为 df.column
,因为那是函数的语法 numpy.log(trainingSetFirstCycle.rent_count)
,其中数据框列“rent_count”,是函数numpy.log
.