如何用 pandas 中 4 个元素的空列表 [] 填充数据帧 Nan 值?

How to fill dataframe Nan values with empty list [] of 4 elements in pandas?

这是我的数据框:

          date                          ids
0     2011-04-23  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,...
1     2011-04-24  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,...
2     2011-04-25  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,...
3     2011-04-26  NaN
4     2011-04-27  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,...
5     2011-04-28  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,...

我想用 [[],[],[],[]] 替换 Nan。怎么做?

df['ids'].fillna("").apply(list)

对于 1 个元素的列表效果很好,但我们如何将它用于 4 个元素的列表?

您可以使用 .apply() 检查值是否为 np.nan。如果是,则填充嵌套列表,否则为正常值。

试试这个:

df['ids'] = df['ids'].apply(lambda d: d if d is not np.nan else [[],[],[],[]])

您不能将 fillna 与列表一起使用,但您可以创建一个包含您的列表的系列,该列表在数据帧的长度内重复,并将其分配给 b,其中 b 是 NaN:

df.loc[df['b'].isna(), 'b'] = pd.Series([ [[]]*4 ] * len(df))

你可以试试

df['ids'] = df['ids'].apply(lambda x: [[],[],[],[]] if x!=x else x)

这里利用了np.nan不等于自身的特性