两个pandas数据帧之间的每个单元中的位计数不同

时间:2017-02-20 10:39:54

标签: python pandas

我有一个二进制字符串的数据框如下:

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中。我可以提出你的建议吗?提前谢谢。

1 个答案:

答案 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