能否使用np.where从多个不同大小的DataFrame创建新DataFrame?支持多条件吗?
关于用np.where从不同大小DataFrame创建新DataFrame的问题
可以用np.where配合pandas的维度对齐操作实现,但仅靠多条件的np.where本身无法直接完成,原因和解决方法如下:
核心限制:np.where的维度要求
np.where的输入数组(条件数组、选择值数组)必须保持维度一致。不同大小的DataFrame形状不匹配,直接传入np.where会触发维度不兼容的报错,无法直接执行。
可行的实现方式:先对齐维度,再用np.where
需要先通过pandas的索引对齐工具(比如reindex、merge、join)将不同大小的DataFrame调整为相同维度,再结合np.where的多条件逻辑生成新DataFrame。
举个实际例子:
import pandas as pd import numpy as np # 创建两个大小不同的DataFrame df_large = pd.DataFrame({'value': [5, 15, 25, 35, 45], 'threshold': [10, 20, 30, 40, 50]}, index=[0,1,2,3,4]) df_small = pd.DataFrame({'backup': [100, 200]}, index=[1,3]) # 先将小DataFrame对齐到大DataFrame的索引,缺失值填充为默认值 df_small_aligned = df_small.reindex(df_large.index, fill_value=0) # 用多条件np.where生成新列 new_df = pd.DataFrame({ 'final_value': np.where( df_large['value'] > df_large['threshold'], # 条件1 df_large['value'], # 条件1满足时取的值 np.where( df_large['value'] < 5, # 条件2 0, # 条件2满足时取的值 df_small_aligned['backup'] # 否则取对齐后的备份值 ) ) })
结论
仅靠多条件的np.where无法直接处理不同大小的DataFrame,必须先通过pandas的对齐操作统一维度,再结合np.where的条件逻辑完成新DataFrame的创建。
内容的提问来源于stack exchange,提问作者Chetan Patel
相关产品推荐
相关产品推荐

