我有一个非常大的pyspark.sql.dataframe.DataFrame,名为df.我需要一些枚举记录的方法 - 因此,能够访问具有特定索引的记录.(或选择索引范围的记录组)
在熊猫中,我可以做到
indexes=[2,3,6,7]
df[indexes]
Run Code Online (Sandbox Code Playgroud)
在这里,我想要类似的东西,(并且不将数据帧转换为pandas)
我能得到的最接近的是:
通过以下方式枚举原始数据框中的所有对象:
indexes=np.arange(df.count())
df_indexed=df.withColumn('index', indexes)
Run Code Online (Sandbox Code Playgroud)
问题:
它会在以后工作,如下所示:
indexes=[2,3,6,7]
df1.where("index in indexes").collect()
Run Code Online (Sandbox Code Playgroud)有没有更快更简单的方法来处理它?
我正在制作地图,我想在每个州内放置一个小文本标签.我目前的问题是文本超出了州限制,所以看起来不太好看:

我尝试使用均值,中位数,质心等.
我想要的是每个文本完全在多边形内部或外部,如下所示:
(图片来自http://www.businessinsider.com/map-what-100-is-actually-worth-in-your-state-2015-7?IR=T)
我使用以下代码生成我的图片:
library(maps)
library(dplyr)
library(ggplot2)
#data
mapbase <- map_data("state.vbm")
data(state.vbm.center)
df <- state.vbm.center %>% as.data.frame() %>%
mutate(region = unique(mapbase$region) ) %>% full_join(mapbase)
#actual plotting
cnames <- aggregate(cbind(long, lat) ~ region, data=df, FUN=median)
gmap<-
ggplot()+
geom_polygon( data=df2,
aes(long, lat, group = region, fill = somevalue,alpha=0.3)) +
coord_fixed() +
theme_void() +
geom_text(data=cnames, aes( fontface=2 ,cnames$long, cnames$lat , label = "text"
), color= "black" ,size=3,check_overlap = T, position=position_jitter(width=3, height=3) ) +
scale_fill_gradient(low="red",high="blue")
Run Code Online (Sandbox Code Playgroud)
非常感谢您的提示!