Как установить значения выбранного столбца на основе состояния других столбцов? - PullRequest
0 голосов
/ 01 октября 2019

Мне нужно выделить строку из ячеек в строке 0, в которой она содержится, и скопировать ее в соседний столбец. Затем мне нужно скопировать это значение во весь столбец всякий раз, когда строка рядом с ним не равна нулю.

Я сделал цикл while, который проверяет, находится ли конкретная строка "xyz" в первой строке [0,я]. Если это так, я разделяю эту строку на другой столбец. Затем я выполняю ffill () значение по всему столбцу.

Пока это работает, но неэффективно.

Затем я смог удалить значения, основываясь на условии, что строкарядом с ним null, но цикл while слишком неэффективен. Мне удалось «векторизовать» его, только соединив все столбцы в один столбец.

i = 7
j = len(df.columns)

while i < j:
    if "ASTM" in str(df.loc[0,i]):
        if df.loc[1,i] == 'Method':
            df.loc[2,i] = 'ASTM'+df.loc[0,i].split('ASTM')[1]
            df[i].fillna(method='ffill', inplace=True)

i+=1

На данный момент мне все еще нужно удалить значения, где строка в столбце i-3

Я пытался вставить это после:

df.loc[df[i-3].isnull(), df[i]] = np.NaN

Но я получаю ошибку:

KeyError: "None of [Index(['Density at 15 C (g/mL) (ASTM D5002)', 'Method', 'ASTM D5002)',\n       'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)',\n       'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)',\n       ...\n       'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)',\n       'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)', 'ASTM D5002)',\n       'ASTM D5002)', 'ASTM D5002)'],\n      dtype='object', length=297)] are in the [columns]"

Ожидаю, что он просто удалит значения в столбце i, когда значение в столбце i-3 в той же строке равно нулю.

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