多列熊猫上的ApplyMap函数

时间:2020-10-15 09:47:12

标签: python pandas

我有这个数据框

dd = pd.DataFrame({'a':[1,5,3],'b':[3,2,3],'c':[2,4,5]})

   a  b  c
0  1  3  2
1  5  2  4
2  3  3  5

我只想替换小于c列的a和b列的数字。我要明智地进行此操作

我做到了

dd.applymap(lambda x: 0 if x < x['c'] else x )

我收到错误消息

TypeError: 'int' object is not subscriptable

我知道x是一个整数,但是如何获取该行的列c的值

我想要这个输出

   a  b  c
0  0  3  2
1  5  0  4
2  0  0  5

1 个答案:

答案 0 :(得分:2)

DataFrame.maskDataFrame.lt一起使用:

DO
$do$
DECLARE
    skill_s  Text[];
    jsonObject json = // Json object 
                '{
                    "Name": "bala Kala",     
                    "Education": "B.Tech", 
                    "Skills":  ["enim", "aliquip", "qui"]
                }';
BEGIN 
    SELECT jsonObject::TEXT[]->'Skills' into skill_s; 
    raise info 'JSON value Name is %', skill_s;
END
$do$

或者您可以通过比较列df = dd.mask(dd.lt(dd['c'], axis=0), 0) print (df) a b c 0 0 3 2 1 5 0 4 2 0 0 5 的广播来设置值:

c