我正在使用的数据集在“州”列下包含5个美国领土,我希望删除将这5个领土作为州名称的任何行/记录。我可以基于一个值删除所有记录:
indexNames = df2[df2['state'] == 'District of Columbia'].index
df2.drop(indexNames , inplace=True)
但当我对多个对象执行相同的操作时:
indexNames = df2[(df2['state'] == 'Guam') & (df2['state'] == 'Virgin Islands')].index
df2.drop(indexNames , inplace=True)
没有发生任何变化。不管怎样,我是否可以在第一个语句中列出所有5个并使其工作
编辑:我决定将所有非状态区域重命名为nonstate,然后使用以下代码删除state列中值为nonstate的行
df2['state'] = df2['state'].replace(['District of Columbia','Guam','Mariana
Islands', 'Puerto Rico', 'Virgin Islands'],'nonstate')
indexNames = df2[df2['state'] == 'nonstate'].index
df2.drop(indexNames , inplace=True)
您可以通过过滤掉这些行来“删除”它们:
就我个人而言,我可能会使用isin方法和~(NOT)操作符:
这允许您使用序列,这样您就不必在排除的项中硬编码
您是否尝试过
df2.loc(indexNames)
查看它是否提取您想要的行例如,make filter(这可以是您的州名称)
然后将过滤器应用于数据框,以提取符合条件的行
希望这能有所帮助
相关问题 更多 >
编程相关推荐