Python 用列表填充列的空值

Python 用列表填充列的空值,python,pandas,list,dataframe,Python,Pandas,List,Dataframe,我有数据帧df,可以使用以下代码重新创建: df1 = pd.DataFrame({'name': ['jim', 'john', 'joe', 'jack', 'jake']}) df2 = pd.DataFrame({'name': ['jim', 'john', 'jack'], 'listings': [['orlando', 'los angeles', 'houston'],

我有数据帧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
我想在listings列中用一个none列表填充NaN值,重复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)
你可以做:

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

@SayandipDutta在这里使用1.1.0。@anky我的观点是代码将同一个对象分配给不同的单元格。现在,如果我们在一个单元格中修改一个对象,那么所有其他对象也会被修改。这就是为什么我说我不知道OP是否打算修改df,也不知道这种行为是否是预期的。只是说明一下事实。@SayandipDutta对于rangedf.listings.isna.sum中的uu来说,这个df.loc[…]=[['none']*4有效吗?这也消除了我在其他评论中提到的引用陷阱。@QuangHoang不,它没有。相反,它似乎是:df.loc[df['listings'].isna,'listings']=pd.Series[['none']*4]*5或df.loc[df['listings'].isna,'listings']=pd.Series['none']=pd.Series['none']*4 for uuuuuuu in rangedf.shape[0].@SayandipDutta-我正在使用熊猫1.1.5,来自@anky的答案以及上面评论中的两种方法都有效。
   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]