向dataframe中添加多列np.哪里克劳斯

2024-03-28 11:03:13 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
1条回答
网友
1楼 · 发布于 2024-03-28 11:03:13

np.where(cond,A,B)中,Python计算condAB,然后将它们传递给where函数。where然后broadcasts将输入彼此相对,并执行按元素选择。您似乎有3个嵌套的where。我猜错误发生在最里面的一个,因为它将首先被评估(我不必猜测您是否提供了错误回溯。

                    np.where(
                        # When hash codes are available and matched. 3.2   'Y'
                        (
                                ~df['new_hash'].isna()
                                &
                                ~df['old_hash'].isna()
                                &
                                df['new_hash'].ne(df['old_hash'])
                        ),
                        ['Y', df['cr_date'], current_time],
                        ['N', df['cr_date'], df['up_date']]
                    )

cond部分是第一个()逻辑和表达式。你知道吗

A是3元素列表,B是下一个列表。你知道吗

假设有66行,cond将具有(66,)形状。你知道吗

np.array(['Y', df['cr_date'], current_time])可能是一个(3,)形对象数据类型数组,因为输入包含在字符串、序列和时间对象上。你知道吗

这说明了错误消息中的3个形状:shapes (66,) (3,) (3,))

如果一次只设置一列,表达式将是np.where(cond, 'Y', 'N')np.where(cond, Series1, Series2)。你知道吗

如果您不明白我(或错误)所说的broadcasting是什么意思,您可能需要进一步了解numpy(它是pandas的基础)。你知道吗

相关问题 更多 >