首页 > 解决方案 > 数据框:根据值应用于两列

问题描述

假设我有一个简单的数据框,例如:

import pandas as pd

data = {'letters' : ['a','b','c','d','e'], 'numbers' :[1,2,3,4,5]}
df = pd.DataFrame(data)

该表看起来像这个
简单的数据框

现在说我有一个简短的列表, to_remove = ['b','d']
我怎样才能找到我的数据框中的行,其中“字母”列的值在“to_remove”中,并将“字母”和“数字”中的这一行都修改为无?所以我留下
了 1
无 无
c 3
无 无
e 5

一直在寻找几个小时。谢谢你!!

标签: pythonpandasdataframemultiple-columnsapply

解决方案


用于检查值isin列表和设置Noneloc

to_remove = ['b','d']

df.loc[df['letters'].isin(to_remove), ['letters','numbers']] = None
#all columns
#df.loc[df['letters'].isin(to_remove)] = None
print (df)
  letters  numbers
0       a      1.0
1    None      NaN
2       c      3.0
3    None      NaN
4       e      5.0

如果想要boolean indexing通过反转布尔掩码来过滤行~

df1 = df.loc[~df['letters'].isin(to_remove)]
print (df1)
  letters  numbers
0       a        1
2       c        3
4       e        5

推荐阅读