1、给决策引擎P2做了一个伪接口方便测试,做完伪接口还剩1个多小时,我他妈干什么了呢?我怎么想不起了
2、下午主要就是思考Simon留下的那个问题,几乎思考了一下午,把结论写在了上次挖坑的地方
3、下午同时也解决了加解密的问题,那个软件可以授权进程就ok了
4、晚上主要是写程序解决最佳同盾多头阈值寻找的问题,在这个过程中,我再一次熟悉了pandas的很多用法
- 读取csv成dataframe是read_csv
- 按行号列号选择是df.iloc[行,列],如果是df[:,-1]这样一般是把标签列选择出来,这样选择一列,类型就是series
- 然后就是筛选,pandas的筛选方法非常简单,是生成bool矩阵,比如我的程序中用到的df[(df['d7'] > 8) | (df['d7'] > 12) | (df['d7'] > 25)],里面是一个行列数同df的bool矩阵,所以或不能用or,必须用二进制位的或运算也就是|,同理and不能用and,需要用&,取反不能用not需要用~
- 筛选出来的作为一个集合,剩下的作为一个集合,这个补集,我搜索了一下,没找到方法,我最后是把筛选条件取反获得一个集合,与前面的集合恰好就是互补的
- 列的选择,df.列名或者df[列名],查看df的所有列名可以使用df.columns
- df仍然有shape方法返回df的行列数
- series去重可以用set(df['d7'])
- 写一个空的dataframe,然后不断添加行,我昨天使用的一种可行的办法是这样的,其实每一个dataframe又可以看成是一个list,含很多相同键的dict,所以就把dict不断append到一个list,最后把这个list用pd.DataFrame()直接转化成df,最后可以把df.to_csv输出成csv方便查看和分析
- series是可以迭代的结构,也可以直接SUM
- df也可以用len(df)来计算行数
- 还有一种方法写个空dataframe,然后不断添加行,示例代码如下:
建空dataframe的时候只建列名,然后用DataFrame去转换含一个dict的list,然后append到空的df上,这里要小心一点儿,我昨天在这里浅尝辄止,因为我append后并没像现在这样重新赋值,这个dataframe不像list的append会自动更新改变,这个还要重新赋值一次,这个方法也是可行的result_df = pd.DataFrame(columns=('gini_split','i','j','k','n1','n2','br_bad','br_good')) row = pd.DataFrame([{'gini_split':1,'i':2,'j':3,'k':4,'n1':5,'n2':6,'br_bad':7,'br_good':8},]) result_df = result_df.append(row,ignore_index = True)