逐行遍历DataFrame时如何删除满足指定条件的行
删除Guest列以"test"开头的行
不需要逐行遍历,直接用pandas内置的向量化字符串筛选方法即可,运行效率远高于逐行操作,代码如下:
import pandas as pd # 保留Guest列不以test开头的行,直接覆盖原变量或赋值给新DataFrame都可以 df = df[~df['Guest'].str.startswith('test', na=False)]
参数na=False用于处理Guest列存在空值的场景,避免逻辑判断报错,如果你确定列内没有空值可以去掉该参数。
转列表不带索引的方法
你转列表时带出索引,大概率是用了iterrows()遍历或者直接转换Series对象时取到了索引信息,想要不带索引转列表可以用以下写法:
- 单独转换某一列为列表:
guest_list = df['Guest'].tolist()
- 转换整个DataFrame为嵌套列表(每一行对应一个子列表):
df_full_list = df.values.tolist()
如果你确实需要逐行遍历处理数据,也可以用itertuples方法关闭索引输出:
# 遍历每行时不会返回索引值 for row in df.itertuples(index=False): guest_val = row.Guest status_val = row.Status # 后续自定义处理逻辑
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

