如何从Pandas DataFrame中删除City列值为CT(41.575155 -72.738288)的行?
解决Pandas DataFrame删除特定行的问题
嘿,我来帮你搞定这个问题!要删除City列值为CT(41.575155 -72.738288)的行,有几种简单可靠的方法,我给你一一列出来:
方法1:直接通过布尔索引筛选保留需要的行
这是最直观的方式,直接保留City列不等于目标值的所有行:
import pandas as pd # 先构造你的示例DataFrame(方便测试) data = { 'Date': ['07/17/2012', '10/01/2012', '04/28/2013', '04/06/2014', '04/27/2014'], 'Sex': ['Female', 'Male', 'Male', 'Male', 'Male'], 'Race': ['White', 'White', 'White', 'White', 'White'], 'Cause of Death': ['1,1-Difluoroethane Toxicity', 'Heroin Toxicity', 'Acute Heroin Toxicity', 'Heroin and Cocaine Intoxication', 'Acute Heroin Intoxication'], 'City': [pd.NA, 'PORTLAND', 'CT(41.575155 -72.738288)', 'WATERBURY', 'NEW LONDON'], 'state': [pd.NA, 'CT', pd.NA, 'CT', 'CT'] } df = pd.DataFrame(data) # 核心操作:删除目标行 df = df[df['City'] != 'CT(41.575155 -72.738288)']
这种方法会自动保留City列是NaN的行,因为NaN和任何值比较结果都是False,不会被误删。
方法2:通过正则匹配删除格式类似的行
如果以后还有类似带坐标的错误值(比如CT(xxx.xxx -xxx.xxx)格式),可以用正则表达式批量匹配删除,通用性更强:
# 匹配"CT(数字 数字)"格式的字符串,~表示取反保留其他行,na=False保留NaN行 df = df[~df['City'].str.contains(r'CT\(\d+\.\d+ -\d+\.\d+\)', na=False)]
方法3:先定位索引再删除
如果你想先确认目标行的索引再动手删除,可以这么做:
# 找到目标行的索引 target_index = df[df['City'] == 'CT(41.575155 -72.738288)'].index # 删除该行(加inplace=True可直接修改原DataFrame,无需重新赋值) df.drop(target_index, inplace=True)
⚠️ 小贴士:用inplace=True会直接修改原DataFrame,不需要重新赋值,但如果需要保留原始数据备份,建议还是赋值给新变量,避免数据丢失。
内容的提问来源于stack exchange,提问作者Hima
相关产品推荐
相关产品推荐

