我有两个名为 df 和 df2 的数据框,具有相同的行数。我想基于一些逻辑比较在 df 中创建一个新列,如下
df['new_col']='nothing'
df.loc[(df2['col2'].isna()) & (df2['col2'].isna()) & (~df['col'].isna()), 'new_col'] = df['col3']
上面的代码似乎可以很好地满足我的目的。然而我的期望是我会得到一个错误,因为 “=”两侧的列不匹配。右侧将整个列(大小为 df 行)放入 new_col 列的子集中!我现在真的很困惑!我在这里错过了什么吗?
在作业中使用 Series 时,pandas 会在内部执行索引对齐。这确保了
=
的两侧具有相同的长度和相同的索引顺序。
如果您使用列表或数组,则需要精确匹配的长度。