«KeyError» при объединении кадров данныхPython

Программы на Python
Ответить
Anonymous
 «KeyError» при объединении кадров данных

Сообщение Anonymous »

Пытаюсь использовать машинное обучение для видеоигры, в которую играю, чтобы предсказать предстоящие цены и понять, стоит ли ее сохранять
import requests
import pandas as pd

headers = {"User-Agent": "Hohman#4134 - ML project"}
prices_url = "https://prices.runescape.wiki/api/v1/osrs/latest"

try:
prices_response = requests.get(prices_url, headers=headers)
prices_response.raise_for_status()
prices_data = prices_response.json()
prices_data_df = pd.DataFrame(prices_data)

except requests.exceptions.HTTPError:
print("Error: Could not retrieve prices data. Please check your user agent.")
prices_data_df = pd.DataFrame()

ids_url = "https://prices.runescape.wiki/api/v1/osrs/mapping"

try:
ids_response = requests.get(ids_url, headers=headers)
ids_response.raise_for_status()
ids_data = ids_response.json()
ids_dict = {}
for item in ids_data:
ids_dict[item['id']] = item['name']

ids_data_df = pd.DataFrame.from_dict(ids_dict, orient='index', columns=['name'])

except requests.exceptions.HTTPError:
print("Error: Could not retrieve IDs data. Please check your user agent.")
ids_data_df = pd.DataFrame()

merged_df = pd.merge(prices_data_df, ids_data_df, left_on='id', right_index=True)

item_name = input("Enter the name of the item: ")
item_data = merged_df[merged_df['name'].str.contains(item_name, case=False)]
latest_price = item_data['high'].iloc[0]

print(f"The predicted price of {item_name} is {latest_price} GP.")

Это ошибка
line 33, in
merged_df = pd.merge(prices_data_df, ids_data_df, left_on='id', right_index=True)
line 110, in merge
op = _MergeOperation(
line 703, in
) = self._get_merge_keys()
line 1195, in _get_merge_keys
left_keys.append(left._get_label_or_level_values(k))
line 1850, in _get_label_or_level_values
raise KeyError(key)
KeyError: 'id'**

Я попробовал это, но получил тот же результат, который в тот раз был назван именем. Я понятия не имею, что происходит.
merged_df = pd.merge(prices_data_df, ids_data_df, left_on='name', right_on='name')


Подробнее здесь: https://stackoverflow.com/questions/758 ... dataframes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»