【问题标题】:Adding a columns according to rows found by str.contains(). pandas根据 str.contains() 找到的行添加列。熊猫
【发布时间】: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/…

标签: string pandas dataframe contains


【解决方案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"

【讨论】:

  • 您将所选行的所有单元格更改为“男性”。这种变化应该只发生在“性别”上
猜你喜欢
  • 2017-11-03
  • 2016-08-07
  • 2016-08-28
  • 1970-01-01
  • 2023-03-17
  • 2018-05-26
  • 2021-06-25
相关资源
最近更新 更多