我在pandas df中有一个名为specialty
的列,看起来像这样:
0 1,5
1 1
2 1,2,4,6
3 2
4 1
5 1,5
6 3
7 3
8 1
9 2,3
我想创建一个名为is_1
的新列,specialty
中包含1的所有行都包含1,不包含1的行都包含0。输出如下所示:
0 1
1 1
2 1
3 0
4 1
5 1
6 0
7 0
8 1
9 0
我不知道如何使用混合dtypes的列来实现这一点。我是否可以只使用np.where()
和str.contains()
调用?像这样:
np.where((part_chars['specialty'] == 1) | part_chars['specialty'].str.contains('1'), 1, 0)
是的,这工作……
2条答案
按热度按时间monwx1rj1#
使用
str.contains
和一个匹配完整字的正则表达式,该正则表达式等于1
:输出:
您的解决方案:
输出:
oxosxuxt2#
更新你的代码对我来说很好。
如果你有混合的dtype,你可以用
.astype(str)
强制dtype:您可以使用
str.contains
:str.split
的替代方案: