小编bre*_*mri的帖子

Pandas列绑定(cbind)两个数据帧

我有一个df_a带有id信息的数据框:

    unique_id lacet_number 
15    5570613  TLA-0138365 
24    5025490  EMP-0138757 
36    4354431  DXN-0025343 
Run Code Online (Sandbox Code Playgroud)

和另一个数据帧df_b,我知道的行数对应于以下行df_a:

     latitude  longitude 
0  -93.193560  31.217029  
1  -93.948082  35.360874  
2 -103.131508  37.787609  
Run Code Online (Sandbox Code Playgroud)

我想要做的只是简单地解决这两个问题并得到:

    unique_id lacet_number      latitude  longitude 
0     5570613  TLA-0138365    -93.193560  31.217029  
1     5025490  EMP-0138757    -93.948082  35.360874  
2     4354431  DXN-0025343   -103.131508  37.787609  
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

df_c = pd.concat([df_a, df_b], axis=1)
Run Code Online (Sandbox Code Playgroud)

这给了我一个外连接.

    unique_id lacet_number    latitude  longitude
0         NaN          NaN  -93.193560  31.217029
1         NaN          NaN  -93.948082  35.360874
2         NaN          NaN -103.131508  37.787609
15    5570613  TLA-0138365         NaN …
Run Code Online (Sandbox Code Playgroud)

python pandas

42
推荐指数
2
解决办法
5万
查看次数

在Kotlin中生成随机字母数字字符串的惯用法

我可以在一定范围内生成一个随机的数字序列,如下所示:

fun ClosedRange<Int>.random() = Random().nextInt(endInclusive - start) +  start
fun generateRandomNumberList(len: Int, low: Int = 0, high: Int = 255): List<Int> {
  (0..len-1).map {
    (low..high).random()
  }.toList()
}
Run Code Online (Sandbox Code Playgroud)

然后我将不得不延伸List:

fun List<Char>.random() = this[Random().nextInt(this.size)]
Run Code Online (Sandbox Code Playgroud)

然后我可以这样做:

fun generateRandomString(len: Int = 15): String{
  val alphanumerics = CharArray(26) { it -> (it + 97).toChar() }.toSet()
      .union(CharArray(9) { it -> (it + 48).toChar() }.toSet())
  return (0..len-1).map {
      alphanumerics.toList().random()
  }.joinToString("")
}
Run Code Online (Sandbox Code Playgroud)

但也许有更好的方法?

kotlin

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

Kotlin迭代器列出?

我有一个来自fieldNames的字符串迭代器JsonNode:

val mm = ... //JsonNode
val xs = mm.fieldNames()
Run Code Online (Sandbox Code Playgroud)

我想在保持计数的同时循环遍历字段,例如:

when mm.size() {
  1 -> myFunction1(xs[0])
  2 -> myFunction2(xs[0], xs[1])
  3 -> myFunction3(xs[0], xs[1], xs[2])
  else -> print("invalid")
}
Run Code Online (Sandbox Code Playgroud)

显然上面的代码不起作用,因为xsIterator不能像这样索引.我试图看看我是否可以将迭代器转换为list by mm.toList()但不存在.

我怎样才能做到这一点?

kotlin

18
推荐指数
2
解决办法
6011
查看次数

使用dplyr在许多列上过滤多个条件

我搜索过SO试图找到一个无济于事的解决方案.所以这就是.我有一个包含许多列的数据框,其中一些是数字的,应该是非负的.我想清理数据,因为这些数值列中的某些值是负数.我现在能做的是用正则表达式提取这些列的列名.但我不确定如何基于这些列实现行的过滤.

举个例子,让我们说:

library(dplyr)
df <- read.table(text = 
  "id   sth1    tg1_num   sth2    tg2_num    others   
  1     dave    2         ca      35         new
  2     tom     5         tn      -3         old
  3     jane    -3        al       0         new
  4     leroy   0         az      25         old
  5     jerry   4         mi      55        old", header=TRUE)
pattern <- "_num$"
ind <- grep(pattern, colnames(df))
target_columns <- colnames(df)[ind]
df <- df %>% filter(target_columns >= 0) # it's is wrong, but it's what I want to do
Run Code Online (Sandbox Code Playgroud)

我想从这个过滤中获得的是以下内容:

id   sth1 tg1_num   sth2 tg2_num others
1 …
Run Code Online (Sandbox Code Playgroud)

r

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

使用人工数据设置和播种数据库以进行集成测试的正确方法是什么

假设我在数据库中有2个表,一个叫students,另一个叫departments.students看起来如下:

department_id, student_id, class, name, age, gender, rank
Run Code Online (Sandbox Code Playgroud)

departments看起来像:

department_id, department_name, campus_id, number_of_faculty
Run Code Online (Sandbox Code Playgroud)

我有一个API可以查询数据库并从2个表中检索各种信息.例如,我有一个终点,可以通过加入2个表来获得每个校园的学生数量.

我想为我的API端点进行集成测试.为此,我启动了一个本地数据库,运行数据库模式的迁移以创建表,然后用人工记录填充每个表,以便我确切知道数据库中的内容.但是,提出一个良好的播种过程已经证明是不容易的.对于上面描述的简单示例,我当前的方法涉及为每列生成多个不同的记录.例如,我需要至少2个校区(说mainsatellite),和3个部门(比如Electrical EngineeringMathematicsmain校园Englishsatellite校园).然后我需要每个部门至少2名学生或总共6名学生.如果我在混合gender,agerank,你可以很容易地看到,人工记录的数量呈指数级增长.提出所有这些人工记录是手动的,因此很难维护.

所以我的问题是:一般来说,为集成测试设置和种子数据库的正确方法是什么?

java api integration-testing jvm kotlin

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

How to perform action for all combinations of elements in lists?

I have multiple lists, for the sake of simplicity, let's say 2:

val names = listOf("John", "Tom")
val days = listOf(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

And I want to iterate over all the combinations of these possible values with a function f: (String, Int): Unit:

f("John", 1)
f("John", 2)
f("John", 3)
f("Tom", 1)
f("Tom", 2)
f("Tom", 3)
Run Code Online (Sandbox Code Playgroud)

I'd like to find out the idiomatic way to do this in kotlin. Off the top of my head, I imagine that this can …

kotlin

8
推荐指数
3
解决办法
5977
查看次数

pandas替换列子集的空值

我有一个包含许多列的数据框,例如:

df:
name   salary  age   title
John      100   35    eng
Bill      200  NaN    adm
Lena      NaN   28    NaN
Jane      120   45    eng
Run Code Online (Sandbox Code Playgroud)

我想替换工资和年龄中的空值,但是在其他列中没有.我知道我可以这样做:

u = df[['salary', 'age']]
df[['salary', 'age']] = u.fillna(-1)
Run Code Online (Sandbox Code Playgroud)

但这似乎很简洁,因为它涉及复制.有没有更有效的方法来做到这一点?

python pandas

7
推荐指数
4
解决办法
5963
查看次数

spark编程:组织上下文导入的最佳方式和具有多个功能的其他方法

在玩具示例中简单明了地展示了如何在spark中编程.您只需导入,创建,使用和丢弃所有功能.

import org.apache.spark._
import org.apache.spark.sql._
import org.apache.spark.sql.hive.HiveContext

def main(args: String) {
  val conf = new SparkConf().setAppName("example")
  val sc = new SparkContext(conf)
  val sqlContext = new SQLContext(sc)

  val hiveContext = new HiveContext(sc)
  import hiveContext.implicits._
  import hiveContext.sql

  // load data from hdfs
  val df1 = sqlContext.textFile("hdfs://.../myfile.csv").map(...)
  val df1B = sc.broadcast(df1)

  // load data from hive
  val df2 = sql("select * from mytable")
  // transform df2 with df1B
  val cleanCol = udf(cleanMyCol(df1B)).apply("myCol")
  val df2_new = df2.withColumn("myCol", cleanCol)

  ...

  sc.stop()
}
Run Code Online (Sandbox Code Playgroud)

在现实世界中,我发现自己编写了很多函数来模块化任务.例如,我只有几个函数来加载不同的数据表.在这些加载函数中,我会调用其他函数在加载数据时进行必要的数据清理/转换.然后我会像这样传递上下文:

 def loadHdfsFileAndBroadcast(sc: …
Run Code Online (Sandbox Code Playgroud)

scala apache-spark

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

cassandra:删除与复合主键的一项匹配的所有记录

我有一个 cassandra 表,它有一个复合主键:(school_id, student_id)。假设我想删除该表中属于一所学校的所有记录。使用 cassandra 驱动程序,我尝试仅绑定school_id类似的内容:

val query = QueryBuilder.delete().all().from(session.loggedKeyspace, "mytable")
   .where(QueryBuilder.eq("school_id", QueryBuilder.bindMarker())
   .bind("school_1")
session.execute(query)
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:

com.datastax.driver.core.exceptions.InvalidQueryException: Missing mandatory PRIMARY KEY part student_id
Run Code Online (Sandbox Code Playgroud)

我可以在一所学校拥有数千名学生。我是否必须先查询表以获取所有不同的student_ids,然后使用此删除语句?

cassandra composite-primary-key kotlin

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

docker-maven-plugin:如何将环境变量从“docker run ... -e &lt;value&gt;”传递到构建或运行步骤?

我有一个包含多个public static void main( psvm) 的 .jar,我希望在对docker run ... -e <class.path.from.env>图像执行操作并传递环境变量来指定类路径时能够调用它们。像这样的东西:

  <plugin>
    <groupId>io.fabric8</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <configuration>
      <images>
        <image>
          <name>${project.artifactId}</name>
          <build>
            <from>java:8-jre</from>
            <tags>
              <tag>${build.environment}-latest</tag>
              <tag>${build.environment}-${build.number}</tag>
            </tags>
            <entryPoint>
              <exec>
                <arg>java</arg>
                <arg>-Duser.timezone=UTC</arg>
                <arg>-cp</arg>
                <arg>/opt/${project.artifactId}-${project.version}.jar</arg>
                <arg>${class.path.from.env}</arg>
              </exec>
            </entryPoint>
            <assembly>
              <basedir>/opt</basedir>
              <inline>
                <files>
                  <file>
                    <source>target/${project.artifactId}-${project.version}.jar</source>
                  </file>
                </files>
              </inline>
            </assembly>
          </build>
        </image>
      </images>
    </configuration>
  </plugin>
Run Code Online (Sandbox Code Playgroud)

尽管我阅读了 的整个文档docker-maven-plugin,但我不确定如何才能完成这项工作。基本上我在哪里声明环境变量class.path.from.env以及如何确保它获得我传递的-e环境变量docker run ...

environment-variables maven docker docker-maven-plugin

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