susanli2016/Machine-Learning-with-Python

`AttributeError: 'DataFrame' object has no attribute 'ix'` in `Time Series Forecastings`

Lancashire3000 opened this issue · 1 comments

Hi,
I tried to run Time Series Forecastings example. From

first_date = store.ix[np.min(list(np.where(store['office_sales'] > store['furniture_sales'])[0])), 'Order Date']

print("Office supplies first time produced higher sales than furniture is {}.".format(first_date.date()))

I got
AttributeError: 'DataFrame' object has no attribute 'ix'
If I replace ix to iloc, based on https://stackoverflow.com/questions/59991397/attributeerror-dataframe-object-has-no-attribute-ix then I got
ValueError: Location based indexing can only have [integer, integer slice (START point is INCLUDED, END point is EXCLUDED), listlike of integers, boolean array] types

How to fix it? Thanks

The .ix indexer has been deprecated in Pandas, which is why you're getting an AttributeError. Instead, you should use .loc or .iloc for label-based or integer-location based indexing, respectively.

In the context of your code, you're trying to find the first date where office sales were higher than furniture sales. Here's how you can fix it using .loc:

first_date = store.loc[store['office_sales'] > store['furniture_sales'], 'Order Date'].min()

print("Office supplies first time produced higher sales than furniture is {}.".format(first_date.date()))