我有一个如下的数据帧,列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值。 如果行值是字符串,那么它是一个直接前进并进行比较。
任何人都可以请帮助
答案 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