在没有循环/迭代行的情况下,我想操作一个数据框,以便根据一列(Transaction_Type)中的值将另一列(Gross_Value)中的值乘以-1或不乘以-1。
from subprocess import Popen
import os
f = os.path.join('temp', filename)
Popen(['localc', f])
对于所有销售积分,Gross_Value应该用负数表示:
Transaction_# Transaction_Type Gross_Value
5542-6990 Invoice 39.00
5981-3808 SalesCredit 89.00
8058-9885 Invoice 199.00
5420-6262 SalesCredit 99.00
谢谢!
答案 0 :(得分:1)
使用loc
m = (df['Transaction_Type'] == 'SalesCredit')
df.loc[m, 'Gross_Value'] *= -1
Transaction_# Transaction_Type Gross_Value
0 5542-6990 Invoice 39.0
1 5981-3808 SalesCredit -89.0
2 8058-9885 Invoice 199.0
3 5420-6262 SalesCredit -99.0
答案 1 :(得分:0)
尝试
CREATE OR REPLACE FUNCTION title_basics_partitioner()
RETURNS TRIGGER AS $$
BEGIN
IF (startyear is null) THEN
INSERT INTO startyear_null VALUES (NEW.*);
ELSE IF (startyear >= '1874' AND startyear < '1894') THEN
INSERT INTO startyear_1874_1894 VALUES (NEW.*);
ELSE IF (startyear >= '1894' AND startyear < '1914') THEN
INSERT INTO startyear_1894_1914 VALUES (NEW.*);
ELSE IF (startyear >= '1914' AND startyear < '1934') THEN
INSERT INTO startyear_1914_1934 VALUES (NEW.*);
ELSE IF (startyear >= '1934' AND startyear < '1954') THEN
INSERT INTO startyear_1934_1954 VALUES (NEW.*);
ELSE IF (startyear >= '1954' AND startyear < '1974') THEN
INSERT INTO startyear_1954_1974 VALUES (NEW.*);
ELSE IF (startyear >= '1974' AND startyear < '1994') THEN
INSERT INTO startyear_1974_1994 VALUES (NEW.*);
ELSE IF (startyear >= '1994' AND startyear < '2014') THEN
INSERT INTO startyear_1994_2014 VALUES (NEW.*);
ELSE IF (startyear >= '2014' AND startyear < '2115') THEN
INSERT INTO startyear_2014_2115 VALUES (NEW.*);
ELSE
RAISE EXCEPTION 'Out of range year value. Fix the title_basics_insert_trigger() function!';
END IF;
RETURN NULL;
END;
$$ LANGUAGE plpgsql;