код:
s = pd.DataFrame(df)
print(s.head(3))
print(s.loc[s.Product=='A'])
выход:
Product Sales Date
---------------------------------------------------------------------
0 A 20 2017-5-16
1 A 60 2016-6-16
2 A 30 2015-6-16
Empty DataFrame
Columns: [Product, Sales, Date]
Index: [ ]
Почему в этом случае пул данных пуст? Функция iloc
работает отлично, но это хлопот, и я не хочу использовать ее для 185 продуктов с 31 000 точек данных. Да, название продукта напечатано справа. Я также попробовал функцию isin
которая породила ту же ошибку.
Примечание. Тип - это Series
, но я преобразовал его в DataFrame
. Однако даже после преобразования он показывает тип, который будет Series
. Это может быть ключом к пониманию того, что не так.
Чтобы устранить пробелы, попробуйте:
s['Product'] = s['Product'].str.replace('\s+','')
Как только вы это сделаете, s[s['Product'] == 'A']
должен дать вам что-то.
Кроме того, если вы хотите сохранить пробелы в исходном фрейме данных, вы можете иметь другой столбец:
s['Product_nospace'] = s['Product'].str.replace('\s+','')
и делать все отфильтровывание оттуда. Как только вы закончите, вы можете удалить столбец:
s.drop(columns=['Product_nospace'], inplace=True)
Следуя документации, попробуйте этот фрагмент:
print(s.loc[s['Product']=='A'])
Я не знаю, работает ли s.Product
!
Надеюсь, это поможет.
ура
s.Product
должен работать. ОП сказал, что ведущие места были проблемой. Я добавил ответ ниже, чтобы решить эту проблему.
s['Product'].str.strip()
.