Полные значения NaN в кадре данных на основе значений, завершенных в другом кадре данных - PullRequest
0 голосов
/ 13 июля 2020

Итак, то, что я пытаюсь сделать, это заполнить значения NaN кадра данных правильными значениями, которые должны быть найдены во втором кадре данных. Это будет примерно так

df={"Name":["Lennon","Mercury","Jagger"],"Band":["The Beatles", "Queen", NaN]}
df2={"Name":["Jagger"],"Band":["The Rolling Stones"]}

Итак, у меня есть эта команда, чтобы знать, какие строки имеют хотя бы один NaN:

inds = list(pd.isnull(dfinal).any(1).nonzero()[0].astype(int))

Я подумал, что было бы полезно использовать для как функция (там не удалось)

А потом я попробовал это:

result=df.join(dfinal, on=["Name"])

Но это дает мне следующую ошибку:

ValueError: You are пытается объединить столбцы объекта и int64. Если у вас wi sh для продолжения, вы должны использовать pd.concat

Я проверил, и обе серии «Name» являются строковыми значениями. Поэтому я не могу решить эту проблему.

Имейте в виду, что столбцов больше, и вероятным результатом будет то, что если в строке будет один NaN, он будет иметь как 7 NaN.

Есть ли способ решить эту проблему?

Заранее спасибо!

1 Ответ

0 голосов
/ 13 июля 2020

Map и Fillna()

мы можем настроить таргетинг на отсутствующие значения в вашем целевом df с отсутствующими значениями из второго фрейма данных на основе столбца Name.

df["Band"] = df["Band"].fillna(df["Name"].map(df2.set_index("Name")["Band"]))

print(df)


      Name                Band
0   Lennon         The Beatles
1  Mercury               Queen
2   Jagger  The Rolling Stones
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...