Добавление значений в столбцы данных на основе значений из одного столбца - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть DataFrame с годовыми значениями кг / га, в которых столбцы достигают с 1950 по 2015 год. Первый столбец - это сеточные коды (gridcode_1), достигающие от 1 до 4. Каждый сеточный код имеет конкретное добавочное значение, которое я хочудобавить к кг / га значения других столбцов.

Я попытался решить ее с помощью цикла for и регулярного выражения

for x in kilograms_dep2:
    if kilograms_dep2['gridcode_1'] == 1:
        kilograms[regex="[0-9]{4}"] + 2.7
    elif kilograms_dep2['gridcode_1'] == 2:
        kilograms_dep2[regex="[0-9]{4}"] + 16.04
    elif kilograms_dep2['gridcode_1'] == 3:
        kilograms_dep2[regex="[0-9]{4}"] + 2.7
    elif kilograms_dep2['gridcode_1'] == 4:
        kilograms_dep2[regex="[0-9]{4}"] + 0.75

, но это привело бы только к синтаксическим ошибкам.

Вот несколько первых записей в кадре данных

 gridcode_1         1950_y         1951_y         1952_y         1953_y
          1    1477.273256    1477.273256    1477.273256    1477.273256
          2  523883.351859  523883.351859  523883.351859  523883.351859
          3    2698.864601    2698.864601    2698.864601    2698.864601
          4    6458.175014    6458.175014    6458.175014    6458.175014

поэтому для gricode_1 = 1 Я хочу добавить 2.7, для gridcode_1 = 2 Я хочу добавить 16.04 и т. Д.

Буду признателен за любую помощь для элегантногорешение.

1 Ответ

1 голос
/ 25 сентября 2019
columns_list  = list(df.columns)
columns_list.remove('code')

df.loc[(df['code'] == 1 ),columns_list] = df.loc[(df['code'] == 1),columns_list] + 2.7

df.loc[(df['code'] == 2 ),columns_list] = df.loc[(df['code'] == 2),columns_list] + 16.04

результат:

Result

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...