Pandas: Как ввести значение из того же столбца, но из другой строки - PullRequest
0 голосов
/ 03 августа 2020

У меня есть требование заполнить столбец значениями из того же столбца, но из разных строк.

Пример: ниже представлена ​​структура данных.

    fname   lname
0    bob    andy
1  manny  dorson
2    bob     NaN 

Теперь для всех " lname"значения, которые являются NaN, я хочу заполнить их значениями" lname"из строк, которые имеют общий" fname"

Итак, 3-я строка, в которой нет « lname », я хочу выбрать « lname » из 1-й строки, поскольку « fname » для обеих строк одинаковы. Результат, которого я ожидал:

    fname   lname
0    bob    andy
1  manny  dorson
2    bob     andy 

Это всего лишь простой минифицированный пример. И скажем, если есть несколько строк с совпадающим именем, мы можем выбрать первую. Я много чего пробовал, но у меня ничего не получалось. Любая помощь приветствуется. Спасибо.

1 Ответ

1 голос
/ 03 августа 2020

Используйте groupby и ffill:

#To fill the NaN's with last value of group
df['lname'] = df.groupby('fname', as_index=False)['lname'].ffill()
#To fill the NaN's with first value of group
df['lname'] = (df['lname'].fillna(df.groupby('fname')['lname']
                                    .transform('first')))
...