Python
wiowei
自由职业者,爱好编程
展开
-
python 使用Pip管理本地库
本地通过setup.py方式建立一个本地的python库项目,然后通过pip install .的方式进行本地安装,便于多个项目中快速引用。首先建立一个库项目,项目文件目录如下:qlibs│ setup.py│└─qlibs formula.py __init__.py其中:setup.py是安装配置文件 qlibs是库源代码目录(注意:名字必须与setup.py中name一样,否则findpackages()找不到)setup.py的语法可以网原创 2022-05-14 11:24:04 · 1162 阅读 · 1 评论 -
Python pandas Dataframe常用操作封装
1、查询、设置指定某元素值2、末尾增加一行或多行3、满足列值条件的指定位置插入一行或多行4、删除满足列值条件的一行或多行import pandas as pd'''DataFrame常用计算'''def df_get_item_value(df, col1, col1_value, col2) -> any: '''满足col1列值条件时,返回col2列第一个找到的元素值''' return df.loc[df[col1] == col1_value, [原创 2022-05-13 10:10:41 · 799 阅读 · 0 评论 -
Python丢弃不用的返回值
python的函数支持返回多个值。返回多个值时,默认以tuple的方式返回。1、因为返回值是元组,所以可以通过索引取得某个或某几个返回值a = f()[0]b = f()[1]2、使用双下划线__或更多下划线___________# 丢弃第二个返回值a, __ = f()注:为什么不使用下划线_,因为下划线_在python中有多种意义,所以使用下划线不安全。...转载 2022-05-03 22:09:54 · 1043 阅读 · 0 评论 -
Python3 浅拷贝copy()和深拷贝deepcopy()方法
List列表、Dict字典等对象经常进行常量赋值时,不能直接使用等于号=进行赋值(浅拷贝,只赋值了内存地址,相当于是引用),需要使用copy()方法进行对象复制DICT_INIT = {'A': 0, 'B': 0}dictA = DICT_INIT.copy()...原创 2022-05-02 13:10:46 · 1002 阅读 · 0 评论 -
Python判断输入字符串是小数的方法
数字用isdigit()方法小数用eval()和isinstance()结合print('100'.isdigit())print(isinstance(eval('1.1',float))原创 2022-04-15 13:36:49 · 3185 阅读 · 1 评论 -
Dataframe添加行、列的方法
在Pandas的DataFrame中添加一行或者一列,添加行有df.loc[]以及df.append()这两种方法,添加列有df[]和df.insert()两种方法, 下面对这几种方法的使用进行简单介绍。一、添加行添加一行,采用loc[]方法# 构造一个空的dataframeimport pandas as pddf = pd.DataFrame(columns=['name','number'])# 采用.loc的方法进行df.loc[0]=['cat', 3] # 其中loc[转载 2022-01-24 16:57:34 · 46518 阅读 · 0 评论 -
Pandas Dataframe按某列的条件获取指定元素值
def df_value(df, symbol, col) -> any: '''返回dataframe中指定[symbol,col]行的元素值''' return df.loc[df['symbol'] == symbol].at[0, col]原创 2022-01-21 10:22:28 · 1573 阅读 · 0 评论 -
Python Watchdog 触发多个事件
文件创建的动作其实会触发多种事件,包括FileCreatedEvent以及FileModifiedEvent事件,触发FileEventHander中重写的on_created函数以及on_modified函数,这些事需要注意的,原因在于f=open()这样的文件操作会触发FileCreatedEvent事件,执行on_created函数,文件操作f.flush()和f.close()操作会触发FileModifiedEvent事件,执行on_modified函数。在windows系统下,watchdo原创 2022-01-15 13:50:14 · 1185 阅读 · 0 评论 -
DataFrame删除指定条件的行
import pandas as pddf1 = pd.DataFrame(data=[{'symbol': '000001', 'close': 1.0}, {'symbol': '000002', 'close': 2.0}, {'symbol': '000001', 'close': 3.0}])symbols = ['000001', '000002']print(df1.index[df1['symbol'] == '000001'])print(df1.index[(df1['sym.原创 2022-01-12 22:52:27 · 13925 阅读 · 0 评论 -
Windows server 2016 配置IIS支持Flask框架
1、pip install flask, wfastcgi启用:到Scripts/目录下输入命令wfastcgi-enable运行成功后会提示一下文字:"c:\program files\anaconda3\python.exe"|"c:\program files\anaconda3\lib\site-packages\wfastcgi.py"这段文字非常重要,后续在配置程序映射的时候会用到。2、IIS安装CGI3、安装URL Rewrite 2.0Web Platform Ins原创 2021-12-05 23:50:28 · 1385 阅读 · 0 评论 -
pandas dataframe行条件筛选过滤
满足多个判断条件的行。使用 & 对判断语句进行合并。import pandas as pdimport numpy as npdf = pd.DataFrame(np.arange(16).reshape(4, 4), index=pd.date_range('20200101', periods=4), columns=list('ABCD'))print(df)df_slice = df.loc[(df['A'] == 4) & (df['C'] == 6)]pri原创 2021-11-22 11:30:05 · 3252 阅读 · 0 评论 -
request卡死处理
添加timeout 添加try-except异常处理import requestsimport tracebacktry: res = requests.post(url=URL, json={"message": msg}, timeout=2) if res.status_code != 200: print(res.text)except: traceback.print_exc()原创 2021-11-10 12:21:35 · 466 阅读 · 0 评论 -
Python打印异常调用栈
import tracebacktry: # 风险代码except: traceback.print_exc() # 处理代码原创 2021-11-10 12:17:51 · 1233 阅读 · 0 评论 -
DataFrame指定列的数据类型
创建时,通过dtype指定,但是这种方法只适合整个DataFrame内所有数值都是一个类型的情况 创建后,可以通过astype来修改指定列的类型 从csv读取时,通过dtype可以指定多列的不同类型import pandas as pddf = pd.DataFrame(columns=['col1','col2'],dtype=int)df.astype('float')pd.read_csv(pathfile, index_col=0, dtype={'col1':str}).原创 2021-11-10 12:11:17 · 8617 阅读 · 0 评论 -
Pandas DataFrame读取csv文件Unnamed问题
使用DataFrame.read_csv()时,必须设置index-col=0,否则会自动在最前面加一列indexpd.read_csv(pathfile, index_col=0)原创 2021-11-10 11:54:30 · 1624 阅读 · 0 评论 -
Pandas DataFrame迭代器
iterrows():将DataFrame迭代为(insex, Series)对。 itertuples():将DataFrame迭代为元祖。 iteritems():将DataFrame迭代为(列名, Series)对import pandas as pd inp = [{'c1':10, 'c2':100}, {'c1':11, 'c2':110}, {'c1':12, 'c2':123}]df = pd.DataFrame(inp)# iterrowsfor date, ro...转载 2021-11-09 18:53:41 · 1337 阅读 · 0 评论 -
Python Pandas CSV文件读写操作
注意:在读取csv文件的时候,默认会自动添加新的一列,Unnamed。设置index_col=0即可。import pandas as pdimport os# read_csvif os.path.exists(data_pathfile): rd= pd.read_csv(data_pathfile,index_col=0)# to_csvos.path.exists(path) or os.makedirs(path)rd.to_csv(pathfile).转载 2021-11-09 18:46:03 · 189 阅读 · 0 评论 -
Python Tkinter销毁窗口事件
import tkinter as tkfrom tkinter import messageboxroot = tk.Tk()def on_closing(): if messagebox.askokcancel("Quit", "Do you want to quit?"): root.destroy()root.protocol("WM_DELETE_WINDOW", on_closing)root.mainloop()转载 2021-11-09 16:44:47 · 3799 阅读 · 0 评论 -
Python Tkinter ListBox添加滚动条Scrollbar
from tkinter import *root = Tk()lb = Listbox(root,exportselection=False,height=3)list_item=['1', '2', '3', '4这里很长我需要拽过来~~~~~~~~~~~~~~~','5','6','7']for i in list_item: lb.insert(END,i)scr1 = Scrollbar(root)lb.configure(yscrollcommand = scr1.se.转载 2021-11-09 12:03:17 · 1759 阅读 · 0 评论 -
Python Tkinter Grid布局理解
Grid布局需要配合使用控件的width/height , row/column, sticky这三个属性才能处理好。width/height:修改控件大小,不配置的话是使用控件默认的大小。有些很奇葩的情况,比如ListBox默认很窄,而ScrolledText默认很宽。注意width/height单位是文本宽度,即一个英文字符显示的宽度,而不是像素值(padx/y,geometry都是像素值)row/column:控件放置的行列,Grid名字来源就是这个属性。这是个相对的概念,并没有绝对的大小。每个原创 2021-11-09 07:27:41 · 1462 阅读 · 1 评论 -
Python Tkinter ListBox:通过Listvariable设置ListBox数值
from tkinter import *root = Tk()mylist = ['one', 'two', 'three']var = StringVar(value=mylist)box = Listbox(master=root, listvariable=var)box.pack(fill=BOTH, expand=True)mylist.append('four')mylist.remove('two')mylist.insert(3, mylist.pop(1)).原创 2021-11-09 10:51:06 · 1588 阅读 · 0 评论