如何用 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
不等于自身的特性
这是我的数据框:
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
不等于自身的特性