【问题标题】:Column contains column 3列包含第 3 列
【发布时间】:2019-05-23 12:13:44
【问题描述】:

我有一个数据框。我想测试 (C) 在每一行上 (B) 列中的数字是否在字符串 (A) 列中。

df = pd.DataFrame({'A': ["me 123", "me-123", "1234", "me 12", "123 me"],
                   'B': [123,       123,      123,    123,     6]})

我可以使用提取来做到这一点

df['C'] = df.A.str.extract('(\d+)', expand=False).astype(int).eq(df.B,0).astype(int)

         A    B  C
0   me 123  123  1
1   me-123  123  1
2     1234  123  0
3    me 12  123  0
4  123  me    6  0

但是,如果其中一个 A 值不包含数字:

df = pd.DataFrame({'A': ["me 123", "me-123", "1234", "me 12", "123 me", "me"],
                   'B': [123,       123,      123,    123,     6,        123]})

然后我得到:

ValueError: cannot convert float NaN to integer

【问题讨论】:

  • df.A.str.extract('(\d+)', expand=False).eq(df.B.astype(str)).astype(int)

标签: pandas


【解决方案1】:

NaNs 是浮点数,因此您可以将输出转换为floats:

df['C'] = df.A.str.extract('(\d+)', expand=False).astype(float).eq(df.B,0).astype(int)

【讨论】:

猜你喜欢
  • 2019-09-22
  • 2023-03-09
  • 1970-01-01
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 2019-07-01
  • 1970-01-01
  • 2013-05-19
相关资源
最近更新 更多