用列表填充熊猫列的空值

bshel​​t141

我有df可以使用以下代码重新创建的数据框

df1 = pd.DataFrame({'name': ['jim', 'john', 'joe', 'jack', 'jake']})

df2 = pd.DataFrame({'name': ['jim', 'john', 'jack'],
                    'listings': [['orlando', 'los angeles', 'houston'],
                                 ['buffalo', 'boston', 'dallas', 'none'],
                                 ['phoenix', 'montreal', 'seattle', 'none']]})

df = pd.merge(df1, df2, on = 'name', how = 'left')

print(df)
   name                                  listings
0   jim  [orlando, los angeles, houston, detroit]
1  john           [buffalo, boston, dallas, none]
2   joe                                       NaN
3  jack        [phoenix, montreal, seattle, none]
4  jake                                       NaN

我想,以填补NaN中的值listings与列表列none在了名单的重复长度listings['none']*4,使得所得到的数据框看起来象下面这样:

print(df)
   name                                  listings
0   jim  [orlando, los angeles, houston, detroit]
1  john           [buffalo, boston, dallas, none]
2   joe                  [none, none, none, none]
3  jack        [phoenix, montreal, seattle, none]
4  jake                  [none, none, none, none]

我在下面尝试了两种方法,但都没有用:

# Failed Approach 1
df['listings'] = np.where(df['listings'].isnull(), ['none']*4, df['listings'])

# Failed Approach 2
df['listings'].fillna(['none']*4)
ky

你可以做:

df.loc[df['listings'].isna(),'listings'] = [['none']*4]

   name                            listings
0   jim     [orlando, los angeles, houston]
1  john     [buffalo, boston, dallas, none]
2   joe            [none, none, none, none]
3  jack  [phoenix, montreal, seattle, none]
4  jake            [none, none, none, none]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章