Индексирование DataFrame - PullRequest
       2

Индексирование DataFrame

0 голосов
/ 20 февраля 2019

Я новичок в Python и пытаюсь использовать индексирование для получения фамилии в каждой строке.

import numpy as np
import pandas as pd
def manager(vec):
    for i,val in enumerate(vec):
        if val == np.NaN:
            break

        return vec[i - 1]

df = pd.DataFrame({'ID':[23,15,20], 'L1_name': ['Andrew','Thomas','Thomas'],
                'L1_ID': [234,994,994],'L2_Name':['Andrew','Alice','Thomas'],'L2_ID':[234,237,994],
                'L3_Name':['Jerico','Sarah',np.nan],'L3_ID':[453,237,np.nan]})

    df['new'] = df.apply(manager, axis=1)
df

Что я делаю неправильно, кто-нибудь?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Используйте filter с прямым заполнением для строк пропущенных значений с выделением последнего столбца по позициям:

s = df.filter(like='Name').ffill(axis=1).iloc[:,-1]
print (s)
0    Jerico
1     Sarah
2    Thomas
Name: L3_Name, dtype: object
0 голосов
/ 20 февраля 2019

Я думаю, что это работает

def manager(vec):
    return vec.dropna().iloc[-2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...