Как заменить Pandas значений столбца NaN пустыми значениями списка? - PullRequest
1 голос
/ 31 марта 2020

Учитывая json строку записей, где «схема» для каждой записи не согласована (например, каждая запись не имеет полного набора «столбцов»):

s = """[{"a": 3, "b":[]}, {"a": 4, "b": [4]}, {"a": 5}]"""

A pandas DataFrame может быть построен из этой строки:

import pandas as pd
import json

json_df = pd.DataFrame.from_records(json.loads(s))

Что приводит к

   a    b
0  3   []
1  4  [4]
2  5  NaN

Как все NaN экземпляры pandas Series столбец будет заполнен пустыми list значениями? Ожидаемый результирующий DataFrame будет:

   a    b
0  3   []
1  4  [4]
2  5   []

Я пробовал следующее; ничего из этого не сработало:

json_df[json_df.b.isna()] = [[]]*json_df[json_df.b.isna()].shape[0]

from itertools import repeat
json_df[json_df.b.isna()] = repeat([], json_df[json_df.b.isna()].shape[0])

import numpy as np
json_df[json_df.b.isna()] = np.repeat([], json_df[json_df.b.isna()].shape[0])

Заранее благодарим за внимание и ответ.

1 Ответ

0 голосов
/ 31 марта 2020

сначала найдите НАН и замените его данными той же формы

json_df.loc[json_df.b.isnull(), 'b'] = json_df.loc[json_df.b.isnull(), 'b'].apply(lambda x: [])


    a   b
0   3   []
1   4   [4]
2   4   []
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...