技术标签: python dataframe去除空值
我对pyspark的经验很少,但创建一个包含counts的 DataFrame 并将其 transformation为panda可能不是一个坏主意,因为counts DataFrame 只有一行:
从如下所示并保存为空 DataFrame 开始
+---+---+---+----+
| A| B| C| D|
+---+---+---+----+
| 1| a| b|null|
| 2| c| d|null|
| 3| e| f|null|
+---+---+---+----+
import pyspark.sql.functions as F
counts = null_df.select([F.count(i).alias(i) for i in null_df.columns]).toPandas()
output = null_df.select(*counts.columns[counts.ne(0).iloc[0]])
或者甚至把第一行 transformation成字典,然后循环遍历字典
counts1 = null_df.select([F.count(i).alias(i) for i in null_df.columns])
output2 = null_df.select([k for k,v in counts1.first().asDict().items() if v >0])
它给出了以下信息:
+---+---+---+
| A| B| C|
+---+---+---+
| 1| a| b|
| 2| c| d|
| 3| e| f|
+---+---+---+
在我的系统中 test的基准:
%%timeit
counts = null_df.select([F.count(i).alias(i) for i in null_df.columns]).toPandas()
output = null_df.select(*counts.columns[counts.ne(0).iloc[0]])
#8.73 s ± 412 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
%%timeit
counts1 = null_df.select([F.count(i).alias(i) for i in null_df.columns])
output2 = null_df.select([k for k,v in counts1.first().asDict().items() if v >0])
#9.43 s ± 253 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
%%timeit
counts1 = null_df.select([F.count(i).alias(i) for i in null_df.columns])
output1 = null_df.select([c for c in counts1.columns if counts1[[c]].first()[c] > 0])
#35.3 s ± 1 s per loop (mean ± std. dev. of 7 runs, 1 loop each)
SparkSQL整合Hive1、Hive远程模式2、SparkSQL与Hive共用元数据2.1、开启Hive元数据服务2.1.1、修改配置2.1.2、启动服务2.2、拷贝hive-site.xml与mysql驱动2.3、启动SparkSQL2.4、测试使用3、SparkSQL JDBC连接方式3.1、启动Spark JDBC服务3.2、启动beeline3.3、测试使用1、Hive远程模式SparkSQL整合Hive需要明白如下结构图2、SparkSQL与Hive共用元数据2.1、开启Hive元数
1. 傅里叶变换的集中形式及应用傅立叶变换是以时间为自变量的信号和以频率为自变量的频谱函数之间的一种变换关系。由于自变量时间和频率可以是连续的,也可以是离散的,因此可以组成几种不同的变换对。(1)非周期的连续时间,连续频率-----傅里叶变换 正变换 X(jΩ)={-∞,+∞}x(t)*exp^-jΩt dt 反
交叉验证(Cross Validation)定义(摘自百度百科):交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。目的:为了获
Python:Python多种集成开发环境(IDE,编译器)的简介、安装、入门、使用方法之详细攻略目录Python多种编译器的简介、安装、入门、使用方法1、Anaconda2、ipython2.1、ipython简介2.2、进入ipython3、Spyder3.1、Spyder简介3.3、Spyder安装3.3、Spyder界面...
猜数字游戏import random num=random.randint(1,100)print(num)随机数出一个0~100的整数,成为数字炸弹。i=0while i <= 5: a=int(input()) i=i+1 if a < num: print("数字偏小"); elif a > num: print("数字偏大"); elif a == num: print("回答正确
为什么80%的码农都做不了架构师?>>> ...
在IDL环境下,HDF文件格式转Tiff格式
Ilog(IBM)是最有名的商用BRMS;Drools(开源)是最活跃的开源规则引擎;Jess是Clips的java实现,就如JRuby之于Ruby,是AI系的代表;VisualRules(旗正规则引擎)国内商业规则引擎品牌。今天对比了一下这四个颇有代表性的规则引擎的规则语言。其中Ilog和visualrules是商业产品,没有机会实战。1.一样的If--Then句式与Rete引擎四者都邑把原本杂...
最近初学vue,试着做一个小项目熟悉语法与思想,其中使用elemen-ui的导航栏做路由跳转切换页面。下面记录一下学习过程element-ui引入vue项目的用法参考element官网首先复制官网的例子,在这基础上再修改成我们想要的样子。处理中心我的工作台选项1选项2选项3选项4选项1选项2选项3消息中心订单管理export default {data() {return {activeIndex...
本文介绍一种安卓卸载系统应用的方法,如果你和我一样喜欢瞎折腾,有那么一点强迫症,希望对你有用。作为一名安卓开发者,大学以前总喜欢刷不同刷机包(ROM)、爱装不同的Launcher桌面体验,不过工作了没以前爱折腾了。安卓提供的adb工具不用多介绍,网上都有很多教程。
讲在前面:以下纯用自己的话总结内网渗透,参考部分书籍的目录以及集百家之长,为我所用。内网渗透的流程:内网信息收集与分析,内网权限维持,内网隧道建立,内网横向移动,内网渗透工具的灵活使用内网信息收集:包括手机当前主机信息:”网络信息,主机信息,路由信息,主机上可用的资料,在域内收集域内用户信息,定位域控,定位域管“为下一步分析内网网络情况做准备,为横向移动提供部分技术信息,为在当前主机做权限维持提供有效资料支持内网权限维持:留web后门,留木马后门,留短小的下载器,目前针对开源的后门工具在内网有杀