小编Bou*_*man的帖子

根据列中的条件将值分配给组

我有一个如下所示的数据框:

> 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)

r data-manipulation

10
推荐指数
1
解决办法
1万
查看次数

无法将数据框转换为h2o对象

我在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)

这个问题和我一样,但是解决方案让我遇到了同样的错误.

有没有人有这个问题的经验?我不完全确定如何处理这个问题.

r dataframe h2o

9
推荐指数
1
解决办法
6275
查看次数

每组唯一值的计数器增加 1

我想为每个组创建一个不断增加的计数器,其中每个组都是人和天的独特组合。

这是数据的样子:

> 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)

我希望数据足够清楚。计数器继续直到到达数据集的末尾。

r

5
推荐指数
1
解决办法
171
查看次数

有效地加入2个以上的data.tables

我想知道是否有一种内存有效的方式来加入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之外是否有一种已经被接受的方法可以做到这一点?

r data-manipulation data.table

3
推荐指数
1
解决办法
813
查看次数

将带有 collect_list(column) 的 spark 数据帧转换回长格式

假设我们有数据框 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

python apache-spark pyspark pyspark-sql

2
推荐指数
1
解决办法
2008
查看次数