pandas数据处理之IP正则匹配及orm操作加事务

最近需要对一批数据进行处理,简单的写了一下pandas 处理的方法

import os, django

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'yours project.settings')

django.setup()
from django.db import transaction
import pandas as pd
import re

file_path = "./做市策略市场.xlsx"
df = pd.read_excel(file_path, engine='openpyxl', sheet_name='Sheet1', header=None)
data1 = df.values.tolist()
data2 = [i for i in data1 if "抛单" not in i]
data3 = [i for i in data2 if "做市" not in i]

df = pd.DataFrame(data3, columns=data2[0])
df = df.dropna(how="all")
df = df.dropna(axis=1)
cmc = re.compile(r'([0-9]{1,3}\.){3}[0-9]{1,3}$')

df["服务器ip"] = df["服务器ip"].apply(lambda x: re.search("((?<![\.\d])(?:\d{1,3}\.){3}\d{1,3}(?![\.\d]))", str(x)).group(1))
df = df[df["备注"] == "已完成"]

project = Project.objects.get(name="making")
error_data = []
for k, v in df.iterrows():
    print(v.get("服务器ip"), v.get("市场"), )
    pa = Pa.objects.filter(name=v.get("市场"))
    with transaction.atomic():
        save_id = transaction.savepoint()

        try:
            if pa.exists():
                pa.update(status="closing")
            Pa.objects.create(
                name=v.get("市场"),
                status="normal",
                ip=v.get("服务器ip"),
                project_id=project.id
            )
        except Exception as e:
            transaction.savepoint_rollback(save_id)
            error_data.append(f'name:{v.get("市场")} ip:{v.get("服务器ip")} error:{e}')
            continue
        transaction.savepoint_commit(save_id)
        print(f'ip:{v.get("服务器ip")}, name:{v.get("市场")} 处理完成')

print(error_data)

仅供借鉴,如果你有好的方法,可以写在评论区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值