Pandas根据行中其他单元格的值为单元格赋值

时间:2016-01-17 06:49:53

标签: python python-3.x pandas dataframe

给出以下数据框:

router.route(msg, sender())

我希望能够为import pandas as pd import numpy as np DF = pd.DataFrame({'COL1': ['a','b','b'], 'COL2' : [0,np.nan,1],}) DF COL1 COL2 0 a 0 1 b NaN 2 b 1 COL32的每一行分配一个值为COL1的新列b不是空的。

所需结果如下:

COL2

提前致谢!

3 个答案:

答案 0 :(得分:3)

您可以将numpy.whereisinnotnull

一起使用
DF['COL3'] = np.where((DF['COL1'].isin(['b'])) &(DF['COL2'].notnull()), 2, 0)
print DF 


  COL1  COL2  COL3
0    a     0     0
1    b   NaN     0
2    b     1     2

答案 1 :(得分:3)

这可以使用DataFrame上的apply方法来实现。您需要传入一个函数以应用于每一行,并将轴设置为(jQuery)(".form-submit").click(function(){ }); 以将其设置为正确的模式(应用于每一行,而不是每列。)

这是一个有效的例子:

1

返回此内容:

def row_handler(row):
    if row['COL1'] == 'b' and not np.isnan(row['COL2']):
        return 2
    return 0

DF['COL3'] = DF.apply(row_handler, axis=1)

答案 2 :(得分:1)

定义一个函数,根据其他列返回值。

def value_handle (row):
    if row['COL1'] == 'b' and not pd.isnull(row['COL2']) :
    return 2
else:
    return 0

然后在引入新列时调用新函数。

DF['COL3'] = DF.apply (lambda row: value_handle (row),axis=1)