Пустой фрейм данных, если он не должен быть пустым

1

код:

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. Это может быть ключом к пониманию того, что не так.

Теги:
pandas
python-3.x

2 ответа

0
Лучший ответ

Чтобы устранить пробелы, попробуйте:

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)
  • 0
    Работал. Спасибо :)
  • 0
    @Pranj, обратите внимание, что это удаляет все пробелы, хотя. Если вы просто хотите удалить начальные и конечные пробелы, ответ @ Dark будет лучше: s['Product'].str.strip() .
Показать ещё 1 комментарий
0

Следуя документации, попробуйте этот фрагмент:

print(s.loc[s['Product']=='A'])

Я не знаю, работает ли s.Product !

Надеюсь, это поможет.

ура

  • 0
    Это помогло. Благодарю.
  • 0
    s.Product должен работать. ОП сказал, что ведущие места были проблемой. Я добавил ответ ниже, чтобы решить эту проблему.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню