#python #python-3.x #pandas #list #dataframe
#python #python-3.x #панды #Список #фрейм данных
Вопрос:
у меня есть фрейм данных с именем ‘hasta_2019’:
infl_gen alim_proc alim_fres bienes ener serv
fecha
2001-01 71.94 63.25 68.91 87.30 59.91 69.34
2001-02 71.94 63.36 68.60 87.18 60.21 69.45
2001-03 72.52 63.43 69.43 88.64 60.15 69.70
2001-04 73.17 63.49 69.65 90.06 61.12 70.10
2001-05 73.43 63.81 69.99 90.35 62.21 70.06
2001-06 73.63 63.95 70.16 90.26 62.63 70.38
2001-07 73.11 64.07 70.72 87.88 60.99 70.88
2001-08 73.17 64.23 71.11 87.65 60.10 71.30
2001-09 73.56 64.58 71.36 89.02 60.21 71.01
2001-10 73.89 65.09 70.89 91.00 58.88 71.03
2001-11 74.08 65.43 70.89 92.12 57.45 71.02
2001-12 74.28 65.70 71.77 92.06 56.75 71.39
2002-01 74.15 65.89 71.94 89.78 58.17 72.04
2002-02 74.21 66.00 71.78 89.53 58.32 72.41
2002-03 74.86 66.25 72.21 90.33 59.43 73.02
2002-04 75.90 67.20 72.71 92.54 60.90 73.28
2002-05 76.16 67.47 73.03 92.96 61.06 73.50
2002-06 76.16 67.63 73.17 92.91 59.87 73.80
2002-07 75.64 67.74 73.60 89.96 60.07 74.23
2002-08 75.90 67.81 74.15 89.82 60.26 74.71
2002-09 76.16 67.95 74.73 90.71 60.77 74.43
2002-10 76.87 68.01 74.85 93.38 61.08 74.42
2002-11 77.00 68.07 75.01 94.69 59.49 74.27
2002-12 77.26 68.26 75.62 94.56 60.04 74.61
2003-01 76.94 68.66 75.92 91.62 61.35 74.96
2003-02 77.07 69.14 75.21 91.57 62.20 75.25
2003-03 77.65 69.38 75.47 92.50 63.05 75.62
2003-04 78.30 69.47 75.43 95.07 61.39 76.17
2003-05 78.24 69.53 75.76 95.52 59.86 76.01
2003-06 78.30 69.59 75.93 95.36 59.52 76.32
2003-07 77.85 69.67 76.71 92.04 60.06 76.86
2003-08 78.24 69.80 77.73 91.81 60.88 77.44
2003-09 78.43 69.92 78.83 92.74 60.63 77.01
2003-10 78.95 70.23 78.54 94.90 59.96 77.12
2003-11 79.21 70.43 78.53 95.94 60.14 76.99
2003-12 79.34 70.57 78.96 95.86 59.96 77.29
2004-01 78.69 70.96 79.25 92.38 60.34 77.59
2004-02 78.76 71.37 78.26 92.21 60.60 77.90
2004-03 79.34 71.57 78.77 93.05 61.49 78.31
2004-04 80.45 72.00 78.98 95.90 62.29 78.94
2004-05 80.90 72.82 79.48 96.49 63.80 78.83
2004-06 81.03 73.00 79.47 96.43 63.79 79.18
2004-07 80.45 73.05 80.04 92.89 64.00 79.69
2004-08 80.84 73.14 80.36 92.80 65.14 80.25
2004-09 80.97 73.24 80.31 93.79 65.18 79.87
2004-10 81.81 73.29 80.25 96.27 66.92 79.90
2004-11 82.00 73.42 80.66 97.23 66.12 79.89
2004-12 81.94 73.55 80.89 97.06 64.50 80.18
2005-01 81.16 73.88 81.54 93.35 63.99 80.50
2005-02 81.35 73.96 81.20 93.16 65.23 80.88
по сути, я действительно хочу выбрать каждый столбец и выполнить следующую операцию: (первый месяц года / следующий месяц следующего года) — 1.
И я хочу преобразовать это в функцию, чтобы я просто добавил столбец в качестве параметра, и тогда произойдет волшебство. Но я получил ошибку: NameError: имя ‘column1‘ не определено
итак, у меня есть следующие строки кода:
def function(new_columna):
new = new_columna
new_columna = []
cont = 12
for e in range(0,229,12):
datos = ((hasta_2019.iloc[cont, 0] / hasta_2019.iloc[e, 0] ) - 1)*100
new_columna.append(datos)
cont = 12
if cont >= hasta_2019.shape[0]:
print("terminado")
break
return new_columna
с его помощью я хочу создать список, а затем с его помощью создать новый фрейм данных, но я получил сообщение об ошибке
function(_column1_)
--------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-924-fcd7fae2a243> in <module>
----> 1 funcion(Prueba1)
NameError: name '_column1_' is not defined
Комментарии:
1. Что такое
_column1_
?2. Что такое hasta_2019?
3. _column1 — это имя для _new_column, который я хочу создать
4. и hasta_2019 — это имя фрейма данных, которое я забыл добавить
5. Ваш код не соответствует вашему сообщению об ошибке. Пожалуйста, не забудьте вырезать и вставить ваш точный код таким образом, чтобы пользователи могли копировать и вставлять ваш код в свою среду и получать те же ошибки без необходимости вносить КАКИЕ-ЛИБО изменения.
Ответ №1:
прежде всего в вашем текущем коде :
def function(new_columna):
new = new_columna
new_columna = []
Ваша функция не работает из-за ошибки отступа :
def function(new_columna):
new = new_columna
new_columna = []
Но вам не нужна функция для создания простого объекта списка.
сначала вам просто нужен пустой список :
new_list = []
cont = 12
for e in range(0,229,12):
datos = ((hasta_2019.iloc[cont, 0] / hasta_2019.iloc[e, 0] ) - 1)*100
new_list.append(datos)
cont = 12
После создания списка теперь вы можете добавить свой новый список в виде столбца в существующий фрейм данных (df) следующим образом:
df['column2'] = new_list