根据 str.contains() 找到的行添加列。熊猫

Posted

技术标签:

【中文标题】根据 str.contains() 找到的行添加列。熊猫【英文标题】:Adding a columns according to rows found by str.contains(). pandas 【发布时间】:2014-08-31 18:15:17 【问题描述】:

如何根据str.contains找到的值添加一列?我正在查找男性姓名并添加性别。

   df[df.loc[:,'name'].str.contains("John|Jon")]['gender'] = 'male'

我认为这应该可行,但是:

df

返回不带列的df。进行此类更改的最佳方法是什么? 谢谢

【问题讨论】:

我认为这一行应该是:df[df.loc[:,'name'].str.contains("John|Jon"),'gender'] = 'male' 看起来您正在执行可能有效也可能无效的链式分配,请参阅 pandas.pydata.org/pandas-docs/stable/… 【参考方案1】:
import pandas as pd

df = pd.DataFrame("name":["John|Jon", "ABC"], "age":[34, 45])
df["gender"] = "unknown"
df["gender"][df["name"].str.contains("John")] = "male"

【讨论】:

您将所选行的所有单元格更改为“男性”。这种变化应该只发生在“性别”上

以上是关于根据 str.contains() 找到的行添加列。熊猫的主要内容,如果未能解决你的问题,请参考以下文章

使用str.contains()在加号(+)之后找不到字符串

Pandas:过滤具有多个字符串条件的行[重复]

使用 str.contains 使用正则表达式检查列中的数值时出错

使用 str.contains 忽略 NaN

识别包含单词的句子,并使用 str.contains 在列中显示该单词

找到根据矩阵中特定列中的行之间的绝对差排序的子集