spark:
重命名表头字段
封装预处理函数
python:
pivot
crosstab
pipeline
封装预处理函数
matplotlib
seaborn
pandas在进行merge操作时候,会出现大量NaN,主要是由于left_df与right_df关联的字段类型不一致,需要在数据读入时统一指定为str类型
若加上indicator=True参数设置,会生成新的一列"_merge"为category类型,取值["left_only","both"]
在对dataframe某列使用lambda函数判断是否为空时,使用pd.isnull();在判断为非空时使用pd.notnull()
例如:如果Mobile非空则,is_yn_border_phonenumber赋值为1,否则赋值为0,写法如下:
df1['is_yn_border_phonenumber']=df1['Mobile'].apply(lambda x: 1 if pd.notnull(x) else 0)
##参考资料: https://stackoverflow.com/questions/37060385/pandas-apply-lambda-function-null-values
以上操作主要应用于如下场景,判断df1中某个字段取值是否落在在df2中某个字段的取值范围内
可以先使用merge中的left join操作,写法如下,此处的编写逻辑与SQL中的left join写法类似
df1 = pd.merge(data, df, how='left', left_on='receiver_phonenumber_section', right_on='Mobile',indicator=True)
然后再判断Mobile字段是否为空,若非空,则对应的data中的receiver_phonenumber_section字段取值落在df中的Mobile相应区间内
若为空,则对应的data中的receiver_phonenumber_section字段取值没有落在df中的Mobile相应区间内
此时就可以使用lambda封装判断是否为空,增加一列字段is_yn_border_phonenumber,用于验证数据