Python 数据框:基于值应用于两列

Python 数据框:基于值应用于两列,python,pandas,dataframe,multiple-columns,apply,Python,Pandas,Dataframe,Multiple Columns,Apply,假设我有一个简单的数据帧,例如: 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无无无无无无无无无无

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

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




















无<。谢谢

用于按值列表进行检查,并通过以下方式设置
None

如果要通过反转boolena掩码来过滤行,请使用
~

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

或者可以对
df.loc
使用
df.eval

df.loc[df.eval('letters in @to_remove'),['letters','numbers']]=None
但既然没有,您只是列出了要分配的dataframe的所有列,为什么不:

df.loc[df.eval('letters in @to_remove')]=None
df.loc[df.eval('letters in @to_remove')]=None