如何用空列表值替换熊猫列NaN值?

时间:2020-03-31 19:12:33

标签: python pandas numpy

给出json个记录字符串,其中每个记录的“模式”不一致(例如,每个记录不具有完整的“列”集合):

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

大熊猫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值填充熊猫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 :(得分:0)

首先找到nan并替换为相同形状的数据

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   []