我的数据框有一列数字。列的数据是以逗号分隔的数字字符串。
numbers
-------
1,3,4,5,17,30
5,6,18,37,41,42
1,2,5,14,19,20
1,5,13,20,29,31
1,9,10,11,14,17
2,9,13,25,30,35
如何获取包含数字的所有字符串 1 & 5 只?
所需的输出:
numbers
-------
1,3,4,5,17,30
1,2,5,14,19,20
1,5,13,20,29,31
答案 0 :(得分:3)
您可以split
创建df
,并将eq
与any
进行比较。最后一次按boolean indexing
过滤:
df1 = df['numbers'].str.split(',', expand=True).astype(int)
df = df[df1.eq(1).any(1) & df1.eq(5).any(1)]
print (df)
numbers
0 1,3,4,5,17,30
2 1,2,5,14,19,20
3 1,5,13,20,29,31
条件为contains
的另一种解决方案:
a = df['numbers'].str.contains(',1,|,1$|^1,')
b = df['numbers'].str.contains(',5,|,5$|^5,')
df = df[a & b]
print (df)
numbers
0 1,3,4,5,17,30
2 1,2,5,14,19,20
3 1,5,13,20,29,31