Python: изменить NaN на конкретное c значение, взятое из другого фрейма данных - PullRequest
0 голосов
/ 12 июля 2020

Я хочу назначить переменную фрейму данных, но значение присваивается только первой строке, остальные - Nan. Я могу найти только документацию о том, как превратить значение NaN в ноль.

У меня есть следующие данные:

import pandas as pd

data = {'One': ['a value', 'another value', 'okay', 'yes'],'Two': ['var', 'var2', 'alright', 'pool']}

df = pd.DataFrame(data, columns=['One', 'Two'])

У меня также есть этот список словарей:

d = [{'year': '1997', 'name': 'John', 'another_dict': 'dict'}]

Я хочу назначить year из списка словарей. Никакие другие словари меня не интересуют, только годовой. Чтобы назначить его моему df, я сделал следующее:

преобразовал список словарей в df

dr = pd.DataFrame.from_dict(d, orient='columns')

# strip the year column from the data

acad_year = dr["year"]

# join to the original data

new_data = df.join(acad_year)

print(new_data)

Проблема в том, что 1997 назначается только в первой строке, после этого я получить значения NaN. Кто-нибудь знает, как я могу это сделать, чтобы каждое значение в столбце «год» было «1997»? Я понимаю, что это довольно затяжной процесс, поэтому, если есть лучший способ назначить "год" фрейму данных, дайте мне знать!

Ответы [ 2 ]

1 голос
/ 12 июля 2020

Вы можете назначить скаляр столбцу

df['year'] = 1997

Из вашего словаря

df['year'] = d[0]['year']

Из вашего фрейма данных

df['year'] = dr['year'][0]
1 голос
/ 12 июля 2020

Предполагая, что вам нужно работать с этими двумя dicts, я бы просто использовал ваш текущий метод для создания двух фреймов данных, а затем использовал

df['year'] = acad_year.iloc[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...