Здравствуйте, я новичок в использовании python.
Я пытался преобразовать определенный массив «X» (размером 1 столбец и 153 строки), который содержит числа, представляющие месяцы (например: «5», «5», «6» и т. д.).
Я пытался преобразовать его, импортировав календарь, но я даже не уверен, правильно ли я делаю
код выглядит так,
import calendar
Y = calendar.month_name[X[:]]
где X — массив из 1 столбца с несколькими строками
Я знаю, что это может быть глупая ошибка, но, как я уже сказал, я только начал изучать python, и я был бы очень признателен за любую помощь.
Заранее спасибо!
ой, это опечатка с моей стороны! спасибо за голову!
Если я правильно понимаю вашу проблему, вы получаете сообщение об ошибке: «индексы списка должны быть целыми числами или срезами, а не списком». Чтобы обойти эту проблему, попробуйте:
import calendar
X=[1,2,3]
def int_to_month(x):
return calendar.month_name[x]
Y = [int_to_month(x) for x in X[:]]
Таким образом, вы можете вернуть month_name
для каждого элемента в вашем списке X
.
Приведенный выше скрипт должен возвращать: ['Январь', 'Февраль', 'Март']
Обновлено:
Если X — это серия панд, вы можете преобразовать ее в список, используя метод to_list
:
import calendar
import pandas as pd
mycolumn1=[1, 2, 3]
mycolumn2=["foo", "bar", "foo"]
mydata = {"col1":mycolumn1, "col2":mycolumn2}
df=pd.DataFrame(data=mydata)
X = df['col1'].to_list()
def int_to_month(x):
return calendar.month_name[x]
Y = [int_to_month(x) for x in X[:]]
Спасибо за помощь! я все еще получаю «TypeError: индексы списка должны быть целыми числами или срезами, а не списком», X из набора данных, который я импортировал. Я использовал iloc
, чтобы найти конкретный столбец, и .values
в конце. может это способствует проблеме? массив, который я получаю, равен массив int64. Спасибо еще раз!
Итак, ваш X
— это не список, а серия из фрейма данных pandas, верно?
да я так думаю. Я попытался преобразовать его в список, используя .tolist()
, но теперь я получил значения, заключенные в скобки.
Он буквально делает то, что говорит — возвращает список названий месяцев.
Я отредактировал свой ответ, чтобы учесть серию панд. Пожалуйста, попробуйте.
Я только что прочитал редактирование вашего ответа. Вы, сэр, легенда. большое спасибо за помощь!
Спасибо! Удачи тебе с твоим проектом.
calendar
иCalendar
не одно и то же.