我有一个如下所示的数据框:
> df = data.frame(group = c(1,1,1,2,2,2,3,3,3),
date = c(1,2,3,4,5,6,7,8,9),
value = c(3,4,3,4,5,6,6,4,9))
> df
group date value
1 1 1 3
2 1 2 4
3 1 3 3
4 2 4 4
5 2 5 5
6 2 6 6
7 3 7 6
8 3 8 4
9 3 9 9
Run Code Online (Sandbox Code Playgroud)
我想创建一个新列,其中包含与值列中的值"4"关联的每个组的日期值.
以下数据框显示了我希望实现的目标.
group date value newValue
1 1 1 3 2
2 1 2 4 2
3 1 3 3 2
4 2 4 4 4 …Run Code Online (Sandbox Code Playgroud) 我在Rstudio版本0.99.447中运行h2o包.我运行版本10.9.5 OSX.
我想按照本教程的步骤在R中设置一个本地集群:http://blenditbayes.blogspot.co.uk/2014/07/things-to-try-after-user-part-1-deep html的
第一步似乎不是问题.似乎是一个问题是将我的数据框转换为适当的h2o对象.
library(mlbench)
dat = BreastCancer[,-1] #reading in data set from mlbench package
library(h2o)
localH2O <- h2o.init(ip = "localhost", port = 54321, startH2O = TRUE) #sets up the cluster
dat_h2o <- as.h2o(localH2O, dat, key = 'dat') #this returns an error message
Run Code Online (Sandbox Code Playgroud)
上面的语句as.h2o导致以下错误消息
Error in as.h2o(localH2O, dat, key = "dat") :
unused argument (key = "dat")
Run Code Online (Sandbox Code Playgroud)
如果我删除"key"参数,让数据驻留在机器生成的名称下的H2O键值存储中,则会出现以下错误消息.
Error in .h2o.doSafeREST(conn = conn, h2oRestApiVersion = h2oRestApiVersion,
Unexpected CURL error: Empty reply from server
Run Code Online (Sandbox Code Playgroud)
这个问题和我一样,但是解决方案让我遇到了同样的错误.
有没有人有这个问题的经验?我不完全确定如何处理这个问题.
我想为每个组创建一个不断增加的计数器,其中每个组都是人和天的独特组合。
这是数据的样子:
> df
person date
1 0 monday
2 0 tuesday
3 1 monday
4 1 monday
5 1 tuesday
6 2 monday
7 2 monday
8 2 tuesday
9 2 wednesday
Run Code Online (Sandbox Code Playgroud)
因此,我想添加一个从 1 开始的新变量,并为每个新的人和日期组合添加。
> df
person date counter
1 0 monday 1
2 0 tuesday 2
3 1 monday 3
4 1 monday 3
5 1 tuesday 4
6 2 monday 5
7 2 monday 5
8 2 tuesday 6
9 2 wednesday 7
Run Code Online (Sandbox Code Playgroud)
我希望数据足够清楚。计数器继续直到到达数据集的末尾。
我想知道是否有一种内存有效的方式来加入n data.tables(或数据帧).例如,如果我有以下4个data.tables:
df1 = data.table(group = c(1L,2L,3L),value = rnorm(3),key = "group")
df2 = data.table(group = c(2L,1L,3L),value2 = rnorm(3),key = "group")
df3 = data.table(group = c(3L,2L,1L),value3 = rnorm(3),key = "group")
df4 = data.table(group = c(1L,3L,2L),value4 = rnorm(3),key = "group")
Run Code Online (Sandbox Code Playgroud)
我可以像这样合并它们:
merge(df1,merge(df2,merge(df3,df4)))
Run Code Online (Sandbox Code Playgroud)
但这似乎不是一个最佳解决方案.我可能有许多需要合并的data.tables.有没有办法概括上述内容而不将每个连续的合并复制到内存?在data.table之外是否有一种已经被接受的方法可以做到这一点?
假设我们有数据框 iris:
import pandas as pd
df = pd.read_csv('https://raw.githubusercontent.com/uiuc-cse/data-fa14/gh-pages/data/iris.csv')
df = spark.createDataFrame(df)
Run Code Online (Sandbox Code Playgroud)
我需要按物种对萼片宽度执行一些聚合函数,例如获取每组的 3 个最高值。
import pyspark.sql.functions as F
get_max_3 = F.udf(
lambda x: sorted(x)[-3:]
)
agged = df.groupBy('species').agg(F.collect_list('sepal_width').alias('sepal_width'))
agged = agged.withColumn('sepal_width', get_max_3('sepal_width'))
+----------+---------------+
| species| sepal_width|
+----------+---------------+
| virginica|[3.6, 3.8, 3.8]|
|versicolor|[3.2, 3.3, 3.4]|
| setosa|[4.1, 4.2, 4.4]|
+----------+---------------+
Run Code Online (Sandbox Code Playgroud)
现在,我如何有效地将其转换回长格式的数据帧(意味着每个物种三行,每一行对应一个值)?
有没有办法在不使用的情况下做到这一点collect_list?