如何获取数据帧,如下所示:
col1 col2
row0 abc 3
row1 bcd 2.4
并使用新列生成一个数据框,该数据框基于col2的值是数字是否包含点,如下所示:
col1 col2 col3
row0 abc 3 No dot
row1 bcd 2.4 Has dot
感谢您的帮助。
答案 0 :(得分:4)
以下方法应该起作用:
df['col3']=df['col2'].apply(lambda x: 'No dot' if int(x)==x else 'Has dot')
答案 1 :(得分:2)
将numpy.where
与Series.str.contains
一起使用,因为.
是特殊的正则表达式字符,由\
对其进行转义:
df['col3'] = np.where(df['col2'].astype(str).str.contains('\.'), 'Has dot', 'No dot')
或使用regex=False
参数:
df['col3'] = np.where(df['col2'].astype(str).str.contains('.', regex=False),
'Has dot', 'No dot')
print (df)
col1 col2 col3
row0 abc 3 No dot
row1 bcd 2.4 Has dot