草庐IT

pyspark-dataframes

全部标签

python - pyspark:ValueError:推断后无法确定某些类型

我有一个pandas数据框my_df,my_df.dtypes给我们:tsint64fieldAobjectfieldBobjectfieldCobjectfieldDobjectfieldEobjectdtype:object然后我尝试通过以下操作将pandas数据框my_df转换为spark数据框:spark_my_df=sc.createDataFrame(my_df)但是,我遇到了以下错误:ValueErrorTraceback(mostrecentcalllast)in()---->1spark_my_df=sc.createDataFrame(my_df)2spark_my

python - Pandas DataFrame 检查一组列中是否存在列值

我有一个这样的DataFrame(简化示例)idv0v1v2v3v411051022502222355605038240801104151525100101并且想创建一个附加列,该列要么是1要么是0。如果v0值在v1到v4的值中,则为1,否则为0。因此,在此示例中,对于id1,该值应为1(因为v2=10),对于id2,该值应为0,因为22不在v1至v4中。实际上,该表要大得多(大约100,000行,变量从v1到v99)。 最佳答案 您可以使用底层numpy数组来提高性能:设置a=df.v0.valuesb=df.iloc[:,2:]

python - pandas dataframe hexbin 图没有 xlabel 或轴值

我正在尝试将数据框绘制为hexbin,但似乎无法绘制xlabel和x轴值。数据框如下:szen_df.xs('left',level='pos')剧情如下:szen_df.xs('left',level='pos').plot(x='szen',y='lat',xlim=(0,90),ylim=(-90,90),kind='hexbin',colormap='Reds')结果: 最佳答案 我在python2.7、pandas0.16.2.dev和ipython3.1.0版中也遇到了这个问题。展望documentationforpan

python - 堆叠 pandas DataFrame 时设置列名

当堆叠一个pandasDataFrame时,返回一个Series。通常在我堆叠一个DataFrame之后,我将它转换回一个DataFrame。但是,来自堆叠数据的默认名称使得重命名列有点麻烦。我正在寻找的是一种更简单/内置的方法,可以在堆叠后为列提供合理的名称。例如,对于以下DataFrame:In[64]:df=pd.DataFrame({'id':[1,2,3],...:'date':['2015-09-31']*3,...:'value':[100,95,42],...:'value2':[200,57,27]}).set_index(['id','date'])In[65]:d

python - 如何在不更改 log4j.properties 的情况下关闭 PySpark 中日志的信息?

我在一个集群中工作,在该集群中我无权更改文件log4j.properties以在使用pyspark时停止信息记录(如第一个答案here中所述)。以下解决方案如上述问题中所述spark-shell(scala)的第一个答案工作importorg.apache.log4j.Loggerimportorg.apache.log4j.Level但对于sparkwithpython(即pyspark),它没有工作,也没有以下Logger.getLogger("org").setLevel(Level.OFF)Logger.getLogger("akka").setLevel(Level.OFF)

python - pandas 使用日期时间对象重新索引 DataFrame

是否可以使用由日期时间对象组成的列重新索引pandasDataFrame?我有一个包含以下列的DataFramedf:Int64Index:19610entries,0to19609Datacolumns:cntr19610non-nullvalues#intdatflt19610non-nullvalues#floatdtstamp19610non-nullvalues#datetimeobjectDOYtimestamp19610non-nullvalues#floatdtypes:int64(1),float64(2),object(1)我可以使用df.reindex(index

python - 如何从 pandas DataFrame 的列中减去单个值

假设我有一个数据框:nameagehbali3414jex1613aja2416joy2312我有一个值“5”,我想从“hb”列的每个成员中减去新列可以是:hb98117执行此操作的最佳方法是什么...感谢和问候。 最佳答案 只需从pandas.Series中减去标量值,对于数字列,pandas会自动广播标量值并从列中的每个元素中减去它。示例-df['hb']-5#Where`df`isyourdataframe.演示-In[43]:dfOut[43]:nameagehb0ali34141jex16132aja24163joy231

python - 如何在 dropna() pandas dataframe 之后重置索引 pandas dataframe

我不确定如何在dropna()之后重置索引df_all=df_all.dropna()df_all.reset_index(drop=True)但是在删除行索引之后会跳过例如从0,1,2,4..跳转 最佳答案 您发布的代码已经完成了您想要的操作,但没有“就地”完成。尝试将inplace=True添加到reset_index()或将结果重新分配给df_all。请注意,您还可以将inplace=True与dropna()一起使用,因此:df_all.dropna(inplace=True)df_all.reset_index(drop=

python - 使用 itertuples 遍历 pandas dataframe

我正在使用itertuples遍历pandas数据框。我还想在迭代时捕获行号:forrowindf.itertuples():printrow['name']预期输出:1larry2barry3michael1、2、3是行号。我想避免使用计数器并获取行号。有没有使用pandas实现此目的的简单方法? 最佳答案 当使用itertuples时,每一行都会得到一个命名的tuple。默认情况下,您可以使用row.Index访问该行的索引值。如果索引值不是您要查找的值,那么您可以使用enumeratefori,rowinenumerate(d

python - 来自执行程序的 PySpark 日志记录

在执行器上使用pyspark访问Spark的log4j记录器的正确方法是什么?在驱动程序中这样做很容易,但我似乎无法理解如何访问执行程序上的日志记录功能,以便我可以在本地记录并让YARN收集本地日志。有什么方法可以访问本地记录器吗?标准的日志记录程序是不够的,因为我无法从执行程序访问spark上下文。 最佳答案 您不能在执行器上使用本地log4j记录器。由执行器jvms生成的Pythonworker没有与java的“回调”连接,它们只是接收命令。但是有一种方法可以使用标准python日志记录从执行程序记录并通过YARN捕获它们。在您