如何基于另一列的值应用熊猫函数?

时间:2018-10-25 11:11:57

标签: python python-3.x pandas

我有一个熊猫数据框,其中有两列,一列有一些字符串值,另一列有空字典:

ColA ColB
True  {}
False {}
True  {}
True  {}
False {}
False {}
True  {}

我有一个函数,可以用其他一些值更新字典:

def update_dict(a):
    return a.update({"VAL":["yes"]})

如何将上述功能应用于在ColA旁边带有“假”字符串的所有ColB单元格?:

ColA ColB
True  {}
False {"VAL":["yes"]}
True  {}
True  {}
False {"VAL":["yes"]}
False {"VAL":["yes"]}
True  {}

我知道在熊猫中您可以使用apply函数或applymap。但是,我不知道如何根据先前的列值来完成此操作。

1 个答案:

答案 0 :(得分:0)

有可能,但是不建议在列的值中使用dict,因为丢失了所有矢量化功能:

def update_dict(a):
    a.update({"VAL":["yes"]})
    return a

df['ColB'] = [update_dict(j) if i == 'False' else j for i, j in zip(df['ColA'], df['ColB'])]
print (df)
    ColA              ColB
0   True                {}
1  False  {'VAL': ['yes']}
2   True                {}
3   True                {}
4  False  {'VAL': ['yes']}
5  False  {'VAL': ['yes']}
6   True                {}