草庐IT

pyspark-dataframes

全部标签

python - 取消持久化(pyspark)中的所有数据帧

我是一个spark应用程序,有几个点我想保持当前状态。这通常是在一大步之后,或者缓存我想多次使用的状态。看来,当我第二次在我的数据帧上调用缓存时,一个新副本被缓存到内存中。在我的应用程序中,这会在扩展时导致内存问题。即使在我当前的测试中,给定的数据帧最大约为100MB,但中间结果的累积大小会超出执行程序上分配的内存。请参阅下面的一个小示例来显示此行为。cache_test.py:frompysparkimportSparkContext,HiveContextspark_context=SparkContext(appName='cache_test')hive_context=Hiv

python - 在 PySpark 数据框中添加列总和作为新列

我正在使用PySpark,并且我有一个带有一堆数字列的Spark数据框。我想添加一列,它是所有其他列的总和。假设我的数据框有“a”、“b”和“c”列。我知道我可以做到:df.withColumn('total_col',df.a+df.b+df.c)问题是我不想单独输入每一列并添加它们,尤其是当我有很多列时。我希望能够自动执行此操作,或者通过指定要添加的列名列表来执行此操作。还有其他方法吗? 最佳答案 这并不明显。我没有看到sparkDataframesAPI中定义的列的基于行的总和。版本2这可以通过一种相当简单的方式完成:newd

python - 返回pandas DataFrame列的最大值为零或值

我想用零替换pandasDataFrame列中的负值。有没有更简洁的方式来构造这个表达式?df['value'][df['value'] 最佳答案 您可以使用clipmethod:importpandasaspdimportnumpyasnpdf=pd.DataFrame({'value':np.arange(-5,5)})df['value']=df['value'].clip(0,None)print(df)产量value00102030405061728394 关于python-返

python - 向 Spark DataFrame 添加一个空列

如many中所述otherlocations在网络上,向现有DataFrame添加新列并不简单。不幸的是,拥有这个功能很重要(即使它在分布式环境中效率低下),尤其是在尝试使用unionAll连接两个DataFrame时。将null列添加到DataFrame以促进unionAll的最优雅的解决方法是什么?我的版本是这样的:frompyspark.sql.typesimportStringTypefrompyspark.sql.functionsimportUserDefinedFunctionto_none=UserDefinedFunction(lambdax:None,StringT

python - pandas:在 DataFrame 中组合两列

我有一个PandasDataFrame,其中有多个列:Index:239897entries,2012-05-1115:20:00to2012-06-0223:44:51Datacolumns:foo11516non-nullvaluesbar228381non-nullvaluesTime_UTC239897non-nullvaluesdtstamp239897non-nullvaluesdtypes:float64(4),object(1)其中foo和bar是包含相同数据但名称不同的列。有没有办法将组成foo的行移动到bar中,理想情况下同时保持bar的名称?最后DataFrame

python - Pandas - pandas.DataFrame.from_csv 与 pandas.read_csv

两者有什么区别:pandas.DataFrame.from_csv,文档链接:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.from_csv.html和pandas.read_csv,文档链接:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.parsers.read_csv.html 最佳答案 没有真正的区别(两者都基于相同的底层函数),但正如注释中所述,它们

python - 查看 Spark Dataframe 列的内容

我使用的是Spark1.3.1。我正在尝试在Python中查看Spark数据框列的值。使用Spark数据框,我可以执行df.collect()来查看数据框的内容,但是据我所知,对于Spark数据框列没有这样的方法。例如,数据帧df包含名为'zip_code'的列。所以我可以做df['zip_code']并变成pyspark.sql.dataframe.Column类型,但我找不到查看值的方法df['zip_code']. 最佳答案 您可以访问底层RDD并对其进行映射df.rdd.map(lambdar:r.zip_code).col

python - 一次更改 Pandas DataFrame 多列中的某些值

假设我有以下DataFrame:In[1]:dfOut[1]:applebananacherry003good114bad225good这按预期工作:In[2]:df['apple'][df.cherry=='bad']=np.nanIn[3]:dfOut[3]:applebananacherry003good1NaN4bad225good但这不是:In[2]:df[['apple','banana']][df.cherry=='bad']=np.nanIn[3]:dfOut[3]:applebananacherry003good114bad225good为什么?我怎样才能实现'app

python - 在 Pandas DataFrame 中选择多个列范围

我必须阅读一些Excel格式的文件和一些CSV格式的文件。有些文件有数百列。有没有办法在不指定所有列名或位置的情况下选择多个列范围?例如选择第1-10、15、17和50-100列:df=df.ix[1:10,15,17,50:100]在从Excel文件和CSV文件创建数据帧时以及在创建数据帧之后,我都需要知道如何执行此操作。 最佳答案 使用np.r_np.r_[1:10,15,17,50:100]array([1,2,3,4,5,6,7,8,9,15,17,50,51,52,53,54,55,56,57,58,59,60,61,62

python - 在 DataFrame 中的切片副本上设置值

这个问题在这里已经有了答案:HowtodealwithSettingWithCopyWarninginPandas(20个回答)关闭3年前.我有一个小数据框,说这个:Mass32Mass44120.5767030.496159130.5766580.495832140.5767030.495398150.5765870.494786160.5766160.494473...我想要列Mass32的滚动平均值,所以我这样做:x['Mass32s']=pandas.rolling_mean(x.Mass32,5).shift(-2)它的工作原理就像我有一个名为Mass32s的新列,其中包含我