如何基于Pandas数据框中的另一个列值添加列?

时间:2020-10-02 12:12:21

标签: python python-3.x pandas dataframe

如何获取数据帧,如下所示:

      col1    col2
row0   abc      3
row1   bcd     2.4

并使用新列生成一个数据框,该数据框基于col2的值是数字是否包含点,如下所示:

      col1    col2    col3
row0   abc      3     No dot
row1   bcd     2.4    Has dot

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

以下方法应该起作用:

df['col3']=df['col2'].apply(lambda x: 'No dot' if int(x)==x else 'Has dot')

答案 1 :(得分:2)

numpy.whereSeries.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