根据 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()在加号(+)之后找不到字符串
使用 str.contains 使用正则表达式检查列中的数值时出错