Я пытаюсь получить некоторые данные из xml с помощью pandas. В настоящее время у меня есть «рабочий» код, и, работая, я имею в виду, что он почти работает.получить данные из xml с помощью pandas
import pandas as pd
import requests
from bs4 import BeautifulSoup
url = "http://degra.wi.pb.edu.pl/rozklady/webservices.php?"
response = requests.get(url).content
soup = BeautifulSoup(response)
tables = soup.find_all('tabela_rozklad')
tags = ['dzien', 'godz', 'ilosc', 'tyg', 'id_naucz', 'id_sala',
'id_prz', 'rodz', 'grupa', 'id_st', 'sem', 'id_spec']
df = pd.DataFrame()
for table in tables:
all = map(lambda x: table.find(x).text, tags)
df = df.append([all])
df.columns = tags
a = df[(df.sem == "1")]
a = a[(a.id_spec == "0")]
a = a[(a.dzien == "1")]
print(a)
Так я получаю ошибку "а = ДФ [(df.sem == "1")]", который:
Файл "панды \ index.pyx", строка 139, в pandas.index.IndexEngine.get_loc (pandas \ index.c: 4443)
Файл «pandas \ index.pyx», строка 161, в pandas.index.IndexEngine.get_loc (pandas \ index.c: 4289)
Файл "панды \ SRC \ hashtable_class_helper.pxi", строка 732, в pandas.hashtable.PyObjectHashTable.get_item (панды \ hashtable.c: 13733)
Файл "панды \ SRC \ hashtable_class_helper.pxi", строка 740, в pandas.hashtable.PyObjectHashTable.get_item (панд \ hashtable.c: 13687)
Как я читал другие стеки вопросы, которые я видел, как люди предлагают использовать ФР .loc так я Модифицированное эту строку в
a = df.loc[(df.sem == "1")]
Теперь компиляции кода, но результаты показывают, как эта строка не существует. Необходимо упомянуть, что проблема связана только с тегом «sem». Отдых работает отлично, но, к сожалению, мне нужно использовать именно этот тег. Если бы кто-нибудь мог объяснить, что я вызываю эту ошибку, и как ее исправить, я был бы благодарен.
Это работает очень хорошо, но вы можете объяснить, почему мой код не было? – Wesspe
спасибо, что принял. Так что это проблема с кодовыми словами, поэтому, если ваш столбец 'sum',' mean', 'count',' sem', вы не можете выбрать 'df.sum',' df.count', 'df.mean', 'df.sem', потому что все они являются функцией pandas [' sum'] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.sum.html), ['mean' ] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.mean.html) ... Поэтому для этого столбца нужно выбрать 'df ['sum']', 'df [ 'mean'] '...' df ['sem'] '. – jezrael
см. Документы [здесь] (http://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access) - проверьте 'предупреждение' -' Атрибут будет недоступен, если он конфликтует с существующим имя метода, например s.min не допускается .' – jezrael