整行为空进行剔除 result_df[null_lis].dropna(axis=0, how=‘all’)
将三列 年月日 重新组装成一个日期字段: pd.PeriodIndex(year=no_equal_df[“add_year”], month=no_equal_df[“end_month”], day=no_equal_df[“end_day”], freq=“D”).to_datetime()
或者:pd.to_datetime(
(no_equal_df[“now_year”] + 1).astype(str) + “-” + “12” + “-” + “31”).dt.date
4.笛卡尔积:pd.MultiIndex.from_product([name_lis, date_df.record_date.tolist()],
names=[‘product_name’, ‘report_date’]).to_frame(index=False)
另外一种直接用索引造:
df = pd.DataFrame()
df[“value”] =[“apple”,“hnhn”]
df[“date”] = [“2014”,“2015”,“2016”]
dyear_lis = [“2014”,“2015”,“2016”]
df[‘index’] = list(np.arange(df.shape[0]))
product_df = pd.DataFrame()
product_df[‘product_name’] = dyear_lis * df.shape[0]
product_df[‘index’] = list(np.arange(df.shape[0])) * len(dyear_lis)
pd.merge(df, product_df, on=[‘index’], how=‘inner’)
6.在对日期型数据多列求最大值时,类型不能为datetime,应为timestrip 型
7.1)去除打Dataframe字段字符串中 为空 或n个为空的 self.fund_code[~self.fund_code[“productName”].str.contains(r’^\s*$’)]
2)去除单个list中 多个空字符组成的空字符串:list(filter(lambda s: s and (type(s) != str or len(s.strip()) > 0), user_ids))
9 去除list中为空的 字符:list(filter(None,list1))
10 在脚本中写的相对路径只能在本地运行,运行到项目时 需写绝对路径。
例如:DAZIGUAN_PATH = rf"{BASE_DIR}{os.sep}algo{os.sep}daziguan{os.sep}"
11: 对list 中的字符串按照长度排序 : replace_lst.sort(key=lambda x: -len(x))
12:多列排序: record_df.sort_values([‘topic’, ‘risk_type_score’, ‘event_score’], ascending=(1, 0, 0))
13:json.dumps() 无法解析 int32 类型数据 需将数据转换成 int64 result_df[“data_type”].astype(np.int64)
14: 判断时间 大于某个区间 pd.Timedelta(hours=2)
15: mysql 加密解密 :SELECT HEX(AES_ENCRYPT(front_ratio, ‘abc123’)) FROM py_etl_question_bank_financial_team_contrast
;
– UPDATE py_etl_question_bank_financial_team_contrast set front_ratio=HEX(AES_ENCRYPT(front_ratio, ‘abc123’))
SELECT AES_DECRYPT(UNHEX(front_ratio), ‘abc123’) FROM py_etl_question_bank_financial_team_contrast
;
python 中 hex_str = [“HEX(AES_ENCRYPT(’%s’, ‘%s’))” % (val, secret_key) for val in df[column]]
hex_str = "select " + ‘,’.join(hex_str)
val_df = select_sql(sql_str=hex_str, conn_dic=dic_name)
product_price_all_market_gather
ADD unique(cp_id,product_object);product_price_all_market_gather
DROP INDEX cp_id_217.取两列的最大最小值横向 behavior_df[[“middle_ratio”, ‘middle_base’]].max(axis=1)
18 apply 多个参数 如何传参
19:对 部分列进行去重:rel_province_df.drop_duplicates([‘temp_id’, split_name])
20 :日期差值比较:
21: 更新某个字段的部分内容:UPDATE job_schadul_trigger_info
SET executor_param = REPLACE(executor_param, ‘http://quality-pro.pystandard.py//’, ‘http://quality-pro.pystandard.py/’) where job_desc LIke “质控2019%” ;