【发布时间】: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