【问题标题】:Conditional Statement with a "wildcard" [duplicate]带有“通配符”的条件语句[重复]
【发布时间】:2020-06-08 14:33:21
【问题描述】:

在表 A 中,有第 1 列和第 2 列。

  • 第 1 列是唯一 ID,例如 (‘A12324’),第 2 列暂时为空白。
  • 如果 id 以 A 开头,我想将第 2 列的值填入 Yes,否则填入 No。

有没有人熟悉我如何使用左键?

我试过了,但我的错误读取未定义。

 TableA.loc[TableA['col1'] == left('A',1), 'hasAnA'] = 'Yes'

【问题讨论】:

  • TableA['col1'][1] == 'A'
  • 我不认为left() 在这种情况下是一个定义的方法,但我发布了一个没有它的答案。如果我错了,请纠正我。
  • 谢谢@JohannesAck!这是完全正确的。
  • 您是否介意添加我如何将多个条件添加到一个语句中。假设我试图获得精确的字符串匹配并且我还想排除空值?

标签: python pandas conditional-statements wildcard


【解决方案1】:

您可以使用pd.Series.str.startswith() 方法:

>>> frame = pd.DataFrame({'colA': ['A12342', 'B123123231'], 'colB': False})
>>> condition = frame['colA'].str.startswith('A')
>>> frame.loc[condition, 'colB'] = 'Yes'
>>> frame
         colA  colB
0      A12342   Yes
1  B123123231  False

【讨论】:

  • 如果我想添加多个条件怎么办?比如'colA'以A开头,'colA'以B结尾,还有1个?我正在使用您的方法尝试 3 个条件,但均不成功。
  • @Lauren 可以定义多个条件,类似于代码示例中的条件,然后使用& 运算符组合它们:combined_cond = condA & condB & condC
  • 我这样做了,但在 and 处出现了一个关于我的语法的错误。 '条件 = ((df['status']=='Live') and (df['name'].str.startswith('A') and (df['true']==1)) df.loc [条件,'EmptyCol'] = 'True' '
  • 你必须使用&,而不是and
猜你喜欢
  • 2012-08-25
  • 1970-01-01
  • 2011-01-17
  • 1970-01-01
  • 1970-01-01
  • 2022-11-13
  • 2017-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多