python - 使用参数列表删除行 Pandas

标签 python list pandas dataframe

我想删除所有不在 pandas DataFrame 列表中的行

例如,考虑这个数据框:

data = {'name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], 
    'year': [2012, 2012, 2013, 2014, 2014], 
    'reports': [4, 24, 31, 2, 3]}
df = pd.DataFrame(data, index = ['Cochice', 'Pima', 'Santa         Cruz', 'Maricopa', 'Yuma'])
df

按名称删除一行很简单:

df = df[df.name != 'Tina'] # to drop the row which include Tina in the name column

但是如果我只想保留 Jason 和 Molly 这一行:

List=['Jason', 'Molly']
df = df[df.name not in List]

不起作用!

最佳答案

使用isin并将列表作为 arg 传递并使用 ~ 反转条件:

In [58]:
names = ['Jason', 'Molly']
df[~df['name'].isin(names)]

Out[58]:
                    name  reports  year
Santa         Cruz  Tina       31  2013
Maricopa            Jake        2  2014
Yuma                 Amy        3  2014

关于python - 使用参数列表删除行 Pandas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37609743/

相关文章:

c++ - 多态对象列表

Java:2个包含不同顺序的相同元素的列表 - 如何删除相同的元素?

python - 如何将一列字符串转换为数字?

python - 从 Python 脚本通过 AWS Workmail 发送电子邮件

python - 如何为列表中的每个变量分配一个数字,然后将相同变量的数字相加?

python - 为什么 sklearn 训练/测试分割加上 PCA 会使我的标签不正确?

python - 使用 pandas.to_csv(df) 仅在 Excel 中显示 numpy.array 的子集

python - Jenkins 工作 - 数据库错误 : file is encrypted or is not a database

python - 单线程与多线程中的 react 器设计模式

Python @contextmanager 方法模仿打开文件方法?