关于使用loc方法根据现有列创建新列的问题

问题描述 投票:0回答:1

我有两个名为 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 列的子集中!我现在真的很困惑!我在这里错过了什么吗?

pandas dataframe data-science data-manipulation
1个回答
0
投票

在作业中使用 Series 时,pandas 会在内部执行索引对齐。这确保了

=
的两侧具有相同的长度和相同的索引顺序。

如果您使用列表或数组,则需要精确匹配的长度。

© www.soinside.com 2019 - 2024. All rights reserved.