首页 > 解决方案 > 在 Python 中创建与另一列检查相等性的新列

问题描述

df
   pycld3   spacy   seqtolang   langid  langdetect  text_language
0   lt     unknown      ro        en         pl         unknown
1   bg     unknown      fi        en         tl         unknown
3   no        id        in        de         no         no
4   en        en        zh        en         en         en
5   en        en        en        en         en         en

我想创建一个新列来检查与基列相比列的值:text_language. 如果df['pycld3']==df['text_language']中的值,则新列df['pycld3_true']= 1。如果不是,则值为 0。我想对其他列执行相同的操作。

预期产出

df
   pycld3   spacy   seqtolang   langid  langdetect  text_language  pycld3_true    spacy_true  ....
0   lt     unknown      ro        en         pl         un             0               1
1   bg     unknown      fi        en         tl         un             0               1
3   no        id        in        de         no         no             1               0
4   en        en        zh        en         en         en             1               1
5   en        en        en        en         en         en             1               1

我现在能想到的代码是:

for row in df['pycld3']:
   if df['pycld3'][i] == df['text_language'][i]:
      df['pycld3_true'] == 1
   elif: 
      df['pycld3'][i] != df['text_language'][i]:
      df['pycld3_true'] == 0
   else:
      df['pycld3_true']== 'nan'

上面的代码不正确且效率低下。

标签: pythonpython-3.xpandasdataframe

解决方案


df
Out[6]: 
  one  two three
0  10  1.2   4.2
1  15   70  0.03
2   8    5     0
df['new'] = df['one']==df['two']
df
Out[8]: 
  one  two three    new
0  10  1.2   4.2  False
1  15   70  0.03  False
2   8    5     0  False

df['new'] = df['new'].astype(int)
df
Out[10]: 
  one  two three  new
0  10  1.2   4.2    0
1  15   70  0.03    0
2   8    5     0    0

推荐阅读