python中truncate的用法_Python pandas.DataFrame.truncate函数方法的使用

DataFrame.truncate(before=None, after=None, axis=None, copy=True)[source]

在某个索引值之前和之后Truncate Series或DataFrame。

这是基于高于或低于某些阈值的索引值,进行布尔索引的有用捷径。

参数:before:date, str, int

Truncate此索引值之前的所有行。

after :date, str, int

Truncate此索引值之后的所有行。

axis :{0或‘index’, 1或‘columns’}, 可选。

Truncate轴。默认情况下Truncate索引(行)。

copy :bool, 默认为 True

返回truncated部分的副本。

返回值:调用者的type

truncated Series或DataFrame。

Notes

如果被truncate的索引仅包含日期时间值,则 可以将字符串之前和之后指定为字符串,而不是时间戳。

例子>>> df = pd.DataFrame({'A': ['a', 'b', 'c', 'd', 'e'],

... 'B': ['f', 'g', 'h', 'i', 'j'],

... 'C': ['k', 'l', 'm', 'n', 'o']},

...

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是重写后的优化代码: CREATE OR REPLACE PROCEDURE ord_dev AS v_sql VARCHAR2(32767); v_count NUMBER; v_time VARCHAR2(20); v_d VARCHAR2(2); v_m VARCHAR2(2); BEGIN -- Truncate b_cur_names table EXECUTE IMMEDIATE 'TRUNCATE TABLE b_cur_names'; -- Get the table names matching the criteria v_sql := 'INSERT INTO b_cur_names SELECT TABLE_NAME FROM SYS.ALL_TABLES a WHERE a.owner = UPPER(:owner) AND a.table_name LIKE UPPER(:table_name_pattern) AND SUBSTR(a.table_name,-6) > :table_name_suffix ORDER BY 1'; EXECUTE IMMEDIATE v_sql USING 'jour1', 'OM_SUBSCRIBER_202___', '202205'; -- Drop ord_dev table if exists BEGIN EXECUTE IMMEDIATE 'DROP TABLE ord_dev'; EXCEPTION WHEN OTHERS THEN NULL; END; -- Create ord_dev table v_sql := 'CREATE TABLE ord_dev AS SELECT a.order_id, a.done_date, a.cust_id, a.subscriber_ins_id, a.access_num, c.dev_id, c.dev_name, c.corp_org, c.company_name, c.department_code, c.department_name, c.remarks FROM JOUR1.Om_Subscriber_202301 a LEFT JOIN JOUR1.om_order_202301 b ON a.order_id = b.order_id LEFT JOIN params1.sec_developer c ON b.dev_id = c.dev_id WHERE 1 = 2'; EXECUTE IMMEDIATE v_sql; -- Insert data into ord_dev table FOR c_row IN (SELECT * FROM b_cur_names) LOOP v_sql := 'INSERT INTO ord_dev SELECT a.order_id, a.done_date, a.cust_id, a.subscriber_ins_id, a.access_num, c.dev_id, c.dev_name, c.corp_org, c.company_name, c.department_code, c.department_name, c.remarks FROM JOUR1.Om_Subscriber_' || SUBSTR(c_row.table_name, -6) || ' a LEFT JOIN JOUR1.om_order_' || SUBSTR(c_row.table_name, -6) || ' b ON a.order_id = b.order_id LEFT JOIN params1.sec_developer c ON b.dev_id = c.dev_id WHERE 1 = 1 AND a.access_num LIKE ''192%'' AND a.action = 0'; EXECUTE IMMEDIATE v_sql; COMMIT; END LOOP; END; / 重写后的代码进行了以下优化: 1. 使用绑定变量:将动态SQL的字面量值改为绑定变量,以提高执行计划的复用和安全性。 2. 使用异常处理:在DROP TABLE语句添加异常处理机制,以处理表不存在的情况,避免抛出异常。 3. 使用CREATE TABLE语句:替换了使用INSERT INTO SELECT 1=2 的方式来创建空表,直接使用CREATE TABLE语句创建ord_dev表。 4. 使用FOR循环优化插入:使用FOR循环遍历b_cur_names表,动态构建INSERT INTO语句,将数据插入ord_dev表。 请根据实际需求进行测试和验证,确保代码逻辑正确并满足预期的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值