python - 用列表填充 Pandas 列的空值
问题描述
我有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)
解决方案
你可以做:
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]
推荐阅读
- typescript - 解决Typescript中两个@types冲突的最佳方法?
- sql - SQL Server:检查以前记录的日期
- python-3.x - WAFInvalidParameterException
- python - Nixos:我如何获得一个包含调试信息的 python?
- c - 程序在 realloc 崩溃
- visual-studio-code - 忽略或绕过错误 phpcs
- laravel-5 - 在 laravel 队列中使用多个连接
- c - 如何检查 struct timer_list 是否过期?
- cookies - 神秘的 Cookie 有效期`1969-12-31T23:59:59.000Z`
- python - 如何discord.Invite(查看给定邀请中有多少成员)?