Заполнение столбца на основе значений в другом столбце - pandas - PullRequest
0 голосов
/ 06 августа 2020

После объединения двух фреймов данных у меня есть некоторые пробелы в моем фрейме данных, которые можно заполнить на основе соседних столбцов (у меня гораздо больше столбцов и строк в DF, но я сосредоточен на этих трех столбцах): Пример DF :

Уникальный идентификатор | Тип | Местоположение

A         1       Land
A         NaN     NaN       
B         2       sub
B         NaN     NaN      
C         3       Land
C         3       Land

В конечном итоге я хочу, чтобы были заполнены три столбца:

Уникальный идентификатор | Тип | Местоположение

A         1       Land
A         1       Land     
B         2       sub
B         2       sub    
C         3       Land
C         3       Land

Я пробовал:

df.loc[df.Type.isnull(), 'Type'] = df.loc[df.Type.isnull(), 'Unique ID'].map(df.loc[df.Type.notnull()].set_index('Unique ID')['Type'])

, но он выдает: InvalidIndexError: переиндексирование допустимо только для объектов индекса с уникальным значением

Что мне здесь не хватает? - Спасибо

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

Ваш пример показывает, что вы хотите выполнить форвард-заполнение. Вы можете сделать это так (полный код):

import pandas as pd
from io import StringIO

clientdata = '''ID        N       T
A         1       Land
A         NaN     NaN       
B         2       sub
B         NaN     NaN      
C         3       Land
C         3       Land'''

df = pd.read_csv(StringIO(clientdata), sep='\s+')

df["N"] = df["N"].fillna(method="ffill")
df["T"] = df["T"].fillna(method="ffill")
print(df)
0 голосов
/ 06 августа 2020

Лучшее решение - вероятно, просто избавиться от строк NaN вместо их перезаписи. Pandas имеет для этого простую команду:

df.dropna()

Вот документация по нему: pandas .DataFrame.dropna

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