python - 数据帧: apply on two columns based on values

标签 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)

表格看起来像这样
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/

相关文章:

python - ProcessPoolExecutor 无法执行我自己的功能,但执行打印工作

python - 如何在推导式中正确使用算术运算符?

python - 连接两个 pandas 数据框

python - Pandas/Python - 根据值匹配更新数据帧

python - 使用 Pandas 查找自滚动高点以来的周期数

python - 按字符串向 pandas 数据框添加颜色

python - 类型错误 : 'str' does not support the buffer interface 4

python - 将列添加到 pandas 多索引数据框

pandas - 有条件地用其他行值填充空行值

python - 需要计算 groupby 中 python 数据框中的重复、连续值