Python Pandas:如何按列过滤条件将符合要求的行复制到新DataFrame
问题原因
你当前编写的代码仅会判断df1的Loc列中是否存在值为US的行,只要存在就将完整的df1直接赋值给df2,没有做任何行过滤操作,因此输出和原df1完全一致。
正确实现方法
方法1:布尔索引筛选(最常用)
直接通过列条件生成布尔序列筛选对应行,示例代码如下:
# 筛选Loc列等于US的行,加copy()避免后续修改df2影响原df1 df2 = df1[df1['Loc'] == 'US'].copy()
如果需要让生成的df2的行索引从0开始连续排列,可以追加重置索引的操作:
df2 = df1[df1['Loc'] == 'US'].reset_index(drop=True)
方法2:query方法(可读性更高)
如果偏好更简洁的写法,可以用pandas的query方法实现同等效果:
df2 = df1.query("Loc == 'US'").copy()
内容的提问来源于stack exchange,提问作者Programmer7
相关产品推荐
相关产品推荐

