假设我有一个简单的数据框,例如:
import pandas as pd
data = {'letters' : ['a','b','c','d','e'], 'numbers' :[1,2,3,4,5]}
df = pd.DataFrame(data)
表格看起来像这样
simple dataframe
现在说我有一个简短的列表,to_remove = ['b','d']
我如何找到数据帧上的行,其中“字母”列的值位于“to_remove”中,并将“字母”和“数字”中的这一行修改为“无”?所以我留下了
a 1
无无
c 3
无无
e 5
一直在寻找几个小时。谢谢!!
最佳答案
使用isin
用于通过值列表进行检查并通过loc
设置None
:
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
通过 ~
反转 bool 值掩码:
df1 = df.loc[~df['letters'].isin(to_remove)]
print (df1)
letters numbers
0 a 1
2 c 3
4 e 5
关于python - 数据帧: apply on two columns based on values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52872204/