我有一个数据框,其中的一列中包含这些值:
在:
ssh
出局:
df.line.unique()
我想根据值字符串是否包含LineXX创建一个包含2个值的新列,如下所示:
array(['Line71A', 'Line71B', 'Line75B', 'Line79A', 'Line79B', 'Line75A', 'Line74A', 'Line74B',
'Line70A', 'Line70B', 'Line58B', 'Line70', 'Line71', 'Line74', 'Line75', 'Line79', 'Line58'],
dtype=object)
因此,如果if (df.line.str.contains("Line70") or (df.line.str.contains("Line71") or (df.line.str.contains("Line79")):
return 1
else:
return 0
中的值包含“ Line70”,“ Line71”,“ Line79”,则新列box_type
中的值应为1
我尝试使用以下代码执行此操作:
df.line
但是我得到这个错误:
df['box_type'] = df.line.apply(lambda x: 1 if x.contains('Line70') or x.contains('Line71') or x.contains('Line79') else 0)
然后我尝试在AttributeError: 'str' object has no attribute 'contains'
和.str
之间添加x
,就像contains
一样,但这也导致了错误。
我该怎么做?
谢谢!
答案 0 :(得分:1)
怎么样:
df['box_type'] = df.line.str.contains('70|71|79')
样本数据:
np.random.seed(1)
df = pd.DataFrame({'line':np.random.choice(a, 10)})
输出:
line box_type
0 Line75A False
1 Line70 True
2 Line71 True
3 Line70A True
4 Line70B True
5 Line70 True
6 Line75A False
7 Line79 True
8 Line71A True
9 Line58 False