Python根据多个条件(长度和内容)将字符串从一个单元格复制到另一个单元格

Python根据多个条件(长度和内容)将字符串从一个单元格复制到另一个单元格,python,pandas,Python,Pandas,如果单元格中的值满足特定条件,如何将它们从一列复制到另一列。在这种情况下,单元格内容的长度(大于1)和单元格内容的长度(不包括字母“a”) 输出如下所示: col1 col2 0 a zz 1 b b 2 c c 3 xx a 4 yy b 这是我停下来的地方: for x in dataset['col1']: if len(x) == 1 : ##replace col2 value with that of x 在这

如果单元格中的值满足特定条件,如何将它们从一列复制到另一列。在这种情况下,单元格内容的长度(大于1)和单元格内容的长度(不包括字母“a”)

输出如下所示:

   col1 col2
0   a   zz
1   b   b
2   c   c
3   xx  a
4   yy  b
这是我停下来的地方:

for x in dataset['col1']:
     if len(x) == 1 :
         ##replace col2 value with that of x

在这种情况下,您可以使用
.loc
的第二个参数,该参数允许您设置一个特定的列名,该列名将“接收”由
=
运算符右侧设置的值:

dataset.loc[dataset['col2'].str.len() > 1, 'col2'] = dataset['col1']

在本例中,它检查col1长度是否小于col2长度。我怎么能明确地说如果col1中的内容长度为1,那么copy regardlessthanks看起来很棒!是否可以在行中添加另一个条件,例如长度==1且内容不等于“a”?@piRSquared请检查抱歉,我真的很生气,现在可以了。如果我有什么问题,请告诉我,这个问题将来也可能发生。。(也许也在过去,但我不记得了。)我的一切都很好。我会告诉你其他的。我会一直努力做到公正,改正我的错误。抱歉让我感到困惑。我永远不会建议使用
apply(len)
over
str.len()
mask1 = dataset.col2.str.len() > 1
mask2 = dataset.col1.ne('a')

dataset.assign(col2=dataset.col1.where(mask1 & mask2, dataset.col2))

  col1 col2
0    a   zz
1    b    b
2    c    c
3   xx    a
4   yy    b
dataset.loc[dataset['col2'].str.len() > 1, 'col2'] = dataset['col1']