0

在 excel 表中,我想比较 2 列。列名,如 file_1 和 file_2。通过使用这 2 个列,希望通过使用 excel 公式 [countifs] 创建另一个列,例如“diff”。万一,如果 file_1 和 file_2 列记录匹配,则 diff 列中应为 0(零),否则应为 1。但是,我不是例外结果。可以请帮助任何人。

这是我的输入:

   file_1    file_2 
    G          G
    A          B
    C          F
    E          H
    A          C
    H          E

输出数据框:

    file_1       file_2       diff 
     G          G              0
     A          B              1
     C          F              1
     E          H              0
     A          C              0
     H          E              0

示例代码:

     df = pd.read_excel('file1.xlsx')
     df1 = df[df['file_1'].isin(df['file_2'])]
     df['diff'] = df1
     print(df)
4

3 回答 3

0

您可以使用isin并转换为布尔值:

df['diff'] = (~df['file_2'].isin(df['file_1'])).astype(int)

输出:

  file_1 file_2  diff
0      G      G     0
1      A      B     1
2      C      F     1
3      E      H     0
4      A      C     0
5      H      E     0
于 2022-02-07T10:16:29.417 回答
0

我认为声明:

df1 = df[df['file_1'].isin(df['file_2'])]

当列“file_1”(当前行)中的值在“file_2”列的任何行中可用时,构建一个数据帧(df1),其中每一行都是原始数据帧(df)的一行。它将“file_1”列的每个值与“file_2”列的所有值进行比较

因此,从您的代码中,df1 输出为:

    file_1 file_2
0   G   G
2   C   F
3   E   H
5   H   E

我建议使用如下的简单语句:

df2 = np.where(df.file_1 == df.file_2, 0,1)

它将每一行和同一行的“file_1”列中的值与“file_2”列中的值进行比较。

代码如下所示:

import pandas as pd
import numpy as np
df = pd.read_excel('file1.xlsx')
df2 = np.where(df.file_1 == df.file_2, 0,1)
df['diff'] = df2
print(df)

输出是:

  file_1 file_2  diff
0      G      G     0
1      A      B     1
2      C      F     1
3      E      H     1
4      A      C     1
5      H      E     1
于 2022-02-07T10:18:16.183 回答
0

这应该有效;

import pandas as pd
import numpy as np
df['diff'] = np.where(df['file_1'] == df['file_2'] , '0', '1')
于 2022-02-07T09:40:54.433 回答