基于现有列追加新列

2024-10-01 22:38:42 发布

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

熊猫新手。在

我正在尝试在我的数据框架中创建一个新列,当我把它输入到分类器中时,它将作为一个训练标签。在

对于苹果或梨,如果给定的Id具有(Value1>;0)或(Value2>;0),则label列的值为1.0,否则为0.0。在

我的数据帧按Id索引行,如下所示:

Out[30]: 
                Value1                                               Value2  \
    ProductName    7Up     Apple Cheetos     Onion      Pear PopTart    7Up   
    ProductType Drinks Groceries  Snacks Groceries Groceries  Snacks Drinks   
Id                                                                        
100                0.0       1.0     2.0       4.0       0.0     0.0    0.0   
101                3.0       0.0     0.0       0.0       3.0     0.0    4.0   
102                0.0       0.0     0.0       0.0       0.0     2.0    0.0   


    ProductName     Apple Cheetos     Onion      Pear PopTart  
    ProductType Groceries  Snacks Groceries Groceries  Snacks  
Id                                                         
100                   1.0     3.0       3.0       0.0     0.0  
101                   0.0     0.0       0.0       2.0     0.0  
102                   0.0     0.0       0.0       0.0     1.0  

如果熊猫巫师们能帮我解释一下这个操作的语法,我的大脑正在努力把它们组合起来。在

谢谢!在


Tags: 数据gtidapplepearvalue1groceriesvalue2
2条回答

答案由@弗拉德·拉德这是可行的,但效率不高,因为pandas必须在Python中手动循环所有行,无法利用numpy矢量化函数的加速。以下矢量化解决方案应更有效:

condition = (df['Value1'] > 0) | (df['Value2'] > 0)
df.loc[condition, 'label'] = 1.
df.loc[~condition, 'label'] = 0.

定义您的功能:

def new_column (x):
       if x['Value1'] > 0 :
          return '1.0'
       if x['Value2'] > 0 :
          return '1.0'
       return '0.0'

将其应用于您的数据:

^{pr2}$

相关问题 更多 >

    热门问题