小编use*_*916的帖子

为什么我的取消列表结果比我的列表短?

为什么不列出我的列表数据结构导致不同的长度?列表的长度是13951.未列出结果的长度是13654.没有NULL或没有NA.

> class(price)
[1] "list"

> head(price)
$`570`
[1] 0

$`440`
[1] 0

$`730`
[1] 1499

$`304930`
[1] 0

$`550`
[1] 1999

$`230410`
[1] 0

length(names(price))  # 13951
length(price)         # 13951
length(unlist(price)) # 13654

> sum(is.na(price))
[1] 0
> sum(is.null(price))
[1] 0
Run Code Online (Sandbox Code Playgroud)

如何确保unlist长度与列表长度相同?

- 下面的解决方案:

> out <- do.call(c, lapply(price, (function(x) {
+   if (is.null(x)) {NA} else { x } 
+ })))
> length(out) #2
[1] 13654


> table(sapply(price, class))

numeric 
  13951 
Run Code Online (Sandbox Code Playgroud)

r

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

R,dplyr:收集列的唯一值,根据集合交集改变标签

我正在处理一个大型数据集,但让我们举一个简单的例子来演示我想要实现的目标。我正在使用Rdplyr。我有一张桌子:

id  attribute correct
1   a         a
1   b         a
1   c         a
2   d         e
2   e         e
3   d         f
Run Code Online (Sandbox Code Playgroud)

从上面,我想创建两列,attribute_setlabel。为了澄清,我想要:

id  attribute_set   correct   label
1   a, b, c         a         1
2   d, e            e         1
3   d               f         0
Run Code Online (Sandbox Code Playgroud)

attribute_set应该是一个具有所有属性的集合(任何数据结构)idlabel如果正确的值应为 1,attribute_set否则应为 0。

目前,我attribute_set像这样创建:

design_mat1 <- design_mat %>%
  group_by(id) %>%
  mutate(attribute_set = paste(unique(attribute), collapse = "|")) %>%
  select(-attribute)
Run Code Online (Sandbox Code Playgroud)

label像这样生成: …

r dplyr

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

Python:append()和extend()

我有300万行的.txt文件。该文件包含如下数据:

# RSYNC: 0 1 1 0 512 0
#$SOA 5m localhost. hostmaster.localhost. 1906022338 1h 10m 5d 1s
# random_number_ofspaces_before_this text $TTL 60s
#more random information
:127.0.1.2:https://www.spamhaus.org/query/domain/$
test
:127.0.1.2:https://www.spamhaus.org/query/domain/$
.0-0m5tk.com
.0-1-hub.com
.zzzy1129.cn
:127.0.1.4:https://www.spamhaus.org/query/domain/$
.0-il.ml
.005verf-desj.com
.01accesfunds.com
Run Code Online (Sandbox Code Playgroud)

我试图解析它,使其看起来像:

+--------------------+--------------+-------------+-----------------------------------------------------+
|    domain_name     | period_count | parsed_code |                      raw_code                       |
+--------------------+--------------+-------------+-----------------------------------------------------+
| test               |            0 | 127.0.1.2   |  :127.0.1.2:https://www.spamhaus.org/query/domain/$ |
| .0-0m5tk.com       |            2 | 127.0.1.2   |  :127.0.1.2:https://www.spamhaus.org/query/domain/$ |
| .0-1-hub.com       |            2 | 127.0.1.2   |  :127.0.1.2:https://www.spamhaus.org/query/domain/$ |
| .zzzy1129.cn       |            2 | …
Run Code Online (Sandbox Code Playgroud)

python regex pandas

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

Spark Scala:使用 $ 符号的功能差异?

以下两个表达式之间是否存在功能差异?结果对我来说看起来一样,但很好奇是否有未知的未知数。该$符号表示什么/如何读取?

df1.orderBy($"reasonCode".asc).show(10, false)
    
df1.orderBy(asc("reasonCode")).show(10, false)
Run Code Online (Sandbox Code Playgroud)

scala apache-spark apache-spark-sql

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

PySpark ML:获取KMeans群集统计信息

我已经构建了一个KMeansModel.我的结果存储在一个名为的PySpark DataFrame中 transformed.

(a)我如何解释内容transformed

(b)如何创建一个或多个Pandas DataFrame transformed,以显示14个集群中每个集群的13个特征中每个特征的摘要统计数据?

from pyspark.ml.clustering import KMeans
# Trains a k-means model.
kmeans = KMeans().setK(14).setSeed(1)
model = kmeans.fit(X_spark_scaled) # Fits a model to the input dataset with optional parameters.

transformed = model.transform(X_spark_scaled).select("features", "prediction") # X_spark_scaled is my PySpark DataFrame consisting of 13 features
transformed.show(5, truncate = False)
+------------------------------------------------------------------------------------------------------------------------------------+----------+
|features                                                                                                                            |prediction|
+------------------------------------------------------------------------------------------------------------------------------------+----------+
|(14,[4,5,7,8,9,13],[1.0,1.0,485014.0,0.25,2.0,1.0])                                                                                 |12        |
|(14,[2,7,8,9,12,13],[1.0,2401233.0,1.0,1.0,1.0,1.0])                                                                                |2         |
|(14,[2,4,5,7,8,9,13],[0.3333333333333333,0.6666666666666666,0.6666666666666666,2429111.0,0.9166666666666666,1.3333333333333333,3.0])|2         |
|(14,[4,5,7,8,9,12,13],[1.0,1.0,2054748.0,0.15384615384615385,11.0,1.0,1.0])                                                         |11        |
|(14,[2,7,8,9,13],[1.0,43921.0,1.0,1.0,1.0])                                                                                         |1         |
+------------------------------------------------------------------------------------------------------------------------------------+----------+
only showing top 5 rows
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我从另一篇SO帖子中发现,我可以将功能映射到他们的名字,如下所示.在一个或多个Pandas数据帧中为每个集群的每个特征提供汇总统计(平均值,中值,标准,最小值,最大值)会很不错. …

cluster-analysis machine-learning k-means pyspark apache-spark-ml

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

获取具有对象或分类数据类型的列名列表

我的目标是获得一个列表对象:['assetCode', 'assetName'],其中的内容是Panda.series根据多个条件检索到的标签。我试过:

tmp3 = datatype[datatype == 'object' | datatype == 'category'].index # extract label from Pandas.series
Run Code Online (Sandbox Code Playgroud)

这给出了错误: TypeError: cannot compare a dtyped [object] array with a scalar of type [bool]

然而,虽然不太优雅,但我能够找到以下两个可行的解决方案:

tmp2 = datatype[datatype == 'object'].index # extract label from Pandas.series
tmp2[0]
'assetCode'


tmp1 = datatype[datatype == 'category'].index # extract label from Pandas.series
tmp1[0]
'assetName'
Run Code Online (Sandbox Code Playgroud)

如何将这两个字符串组合成一个列表对象?有没有比我尝试的方式更好的方法来实现这个目标?

python types dataframe pandas

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

dplyr:mutate_at 将字符列转换为因子列

我正在尝试将data.table数据表对象中的字符列转换为因子列。我可以做:

df$a <- as.factor(df$a)
Run Code Online (Sandbox Code Playgroud)

虽然这似乎有效,但它也给出了一个错误:

Warning messages:
1: Unknown or uninitialised column: 'a'. 
Run Code Online (Sandbox Code Playgroud)

上述问题似乎并不少见。对此进行了探索,但仍未解决: 修复多个警告“未知列”。看来dplyr改变列类型的基础解决方案是最好的。这就是我正在努力做的事情。让我们看一个玩具示例。

假设我有一个data.table df

names(df)
[1] "a"  "b"  "c"                   
[4] "d"  "e"  "f"     
Run Code Online (Sandbox Code Playgroud)

我尝试:

df %>% mutate_at(.vars = vars(a), 
                 .funs = funs(factor))
Run Code Online (Sandbox Code Playgroud)

但我得到:

Error in overscope_eval_next(overscope, expr) : object 'a' not found
Run Code Online (Sandbox Code Playgroud)

为什么找不到对象“a”以及如何修复它?

另一个解决方案的参考mutate_atdplyr更改许多数据类型

仅供参考,这是我的 sessionInfo()

sessionInfo()
R version 3.4.3 (2017-11-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

Matrix products: default …
Run Code Online (Sandbox Code Playgroud)

r dplyr

0
推荐指数
1
解决办法
8046
查看次数

R,xgboost:标签必须在[0,1]中才能进行逻辑回归

我收到一条错误,说我的标签必须在[0,1]中:

> system.time(xgb <- xgboost(params  = param,
+                            data    = dtrain,
+                            label   = as.numeric(train.label),
+                            nrounds = 500,
+                            print_every_n = 100,
+                            verbose = 1))
Error in xgb.iter.update(bst$handle, dtrain, iteration - 1, obj) : 
  [10:39:29] amalgamation/../src/objective/regression_obj.cc:108: label must be in [0,1] for logistic regression
Timing stopped at: 0.11 0 0.11
Run Code Online (Sandbox Code Playgroud)

但是,我的标签是[0,1]:

> train.label
   [1] 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 0 1 1 1 1 1 0 1 1 …
Run Code Online (Sandbox Code Playgroud)

r xgboost

0
推荐指数
1
解决办法
1479
查看次数

只提取带有标点符号的字符串中的数字和R中的空格?

如何使用以下字符串中的正则表达式仅提取数字:

+1 Ab_Cd- 001 234.txt`
Run Code Online (Sandbox Code Playgroud)

这样我就回来了:

1001234
Run Code Online (Sandbox Code Playgroud)

我有一个带有这种字符串向量的数据框.我正在尝试在R和Python中执行上述操作.我更熟悉R stringrgsub()来自base.我已经尝试了多个表达式,但无法获得任何效果良好的表达式.

python regex r

-4
推荐指数
1
解决办法
684
查看次数