我有一个二进制字符串的数据框如下:
df = pd.DataFrame({'A':['111','101','011'],'B':['01','10','00']})
A B
111 01
101 10
011 00
和二进制字符串的参考数据帧如下:
ref = pd.DataFrame({'A':['111','111','111'],'B':['00','00','00']})
A B
111 00
111 00
111 00
我想计算df和ref之间每对细胞的位数不同。预期的输出如下。
A B
0 1
1 1
1 0
到目前为止,我可以使用以下想法计算两个位串的差异。
count = sum(1 if a != b else 0 for a,b in zip(str1,str2))
但是,我无法使用带有pandas数据帧的apply()来应用这样的想法,因为str1在df中,而str2在ref中。我可以提出你的建议吗?提前谢谢。
答案 0 :(得分:4)
这样的事情应该做:
df = pd.DataFrame({'A':['111','101','001'],'B':['01','10','00']})
ref = pd.DataFrame({'A':['111','111','111'],'B':['00','00','00']})
diff = lambda s1,s2: sum(1 if a != b else 0 for a,b in zip(s1,s2))
df2 = pd.DataFrame()
for column in df.columns:
df2[column] = list(map(diff,df[column],ref[column]))
输出:
A B
0 0 1
1 1 1
2 2 0