比较混合数据数据类型的两个pandas列

时间:2018-03-07 03:11:56

标签: python pandas

我有一个如下的数据帧,列A和引用的值类型为str,float和int。如果两个值相同然后通过或者失败,我必须比较并创建一个新列。如果所有值都是字符串数据类型但是在比较之前,非常简单,则必须对A列中的任何数值进行舍入,如果是小数,则以第3行中的.0示例结束' 1.0'必须更改为' 1'在与Refer列进行比较之前

       A  Refer
0    usa    usa
1      1      1
2  india    usa
3    1.0      1
4    1.1    1.1
5    1.1    1.2
6  0.888  0.898
7  0.888  0.888

我期待的输出是:

       A  Refer verdict
0    usa    usa    pass
1      1      1    pass
2  india    usa    fail
3    1.0      1    pass
4    1.1    1.1    pass
5    1.1    1.2    fail
6  0.888  0.898    fail
7  0.888  0.888    pass

所以我想创建一个函数,以便它将检查每一行,如果行值是数字,那么它将检查类型是否为float / int。如果它是浮动的并以' .0'结束。然后trunk / remove decimal否则继续使用flat值。 如果行值是字符串,那么它是一个直接前进并进行比较。

任何人都可以请帮助

1 个答案:

答案 0 :(得分:1)

IIUC,pandas中有许多功能构建

更新to_numeric

df.apply(pd.to_numeric,errors='ignore',axis=1).nunique(1).eq(1).map({True:'Pass',False:'Fail'})
Out[272]: 
0    Pass
1    Pass
2    Fail
3    Pass
4    Pass
5    Fail
6    Fail
7    Pass
dtype: object

分配后

df['verdict']=df.apply(pd.to_numeric,errors='ignore',axis=1).nunique(1).eq(1).map({True:'Pass',False:'Fail'})
df
Out[274]: 
       A  Refer verdict
0    usa    usa    Pass
1      1      1    Pass
2  india    usa    Fail
3    1.0      1    Pass
4    1.1    1.1    Pass
5    1.1    1.2    Fail
6  0.888  0.898    Fail
7  0.888  0.888    Pass