小编iva*_*n-k的帖子

Python pandas相当于替换

在R中,有一个相当有用的replace功能.实质上,它在数据帧的给定列中进行条件重新赋值.它可以这样使用: replace(df$column, df$column==1,'Type 1');

在熊猫中实现相同目标的好方法是什么?

我应该使用lambda apply吗?(如果是这样,我如何获得对给定列的引用,而不是整行).

我应该使用np.wheredata_frame.values?看来我在这里错过了一件非常明显的事情.

任何建议表示赞赏.

python equivalent pandas

21
推荐指数
2
解决办法
3万
查看次数

使用Ruby Sequel清理关联定义

我正在使用Jeremy Evan的续集来填充(SQLite)数据库,其中包含我从网页中搜集的数据.该数据库涉及我与协会表达的许多多对多关系.关联是在类定义中创建的,在运行脚本时始终会对其进行评估.重要的是,关联类定义需要具有必要的表.因此,表创建方法应该在关联定义的顶层.这是一个例子:

module Thing
db = Sequel.Sqlite('data.sqlite')

db.create_table(:clients)
    String :client_id, :primary_key => true
    String :client_data
end

db.create_table(:orders)
    String :order_id, :primary_key => true
    String :order_data
end

db.create_table(:orders_clients)
    String :order_id
    String :client_id
    primary_key [:order_id,:client_id]
end

class Person < Sequel::Model
    unrestrict_primary_key
    many_to_many :orders
end

class Order < Sequel::Model
    unrestrict_primary_key
    many_to_many :orders
end
end
Run Code Online (Sandbox Code Playgroud)

首先,我认为这是一个相当脏的解决方案,因为我的方法调用和类定义位于同一名称空间中.如果我尝试分离类定义,我会得到No database associated with Sequel::Model错误(这是有道理的,但我想推迟对关联定义的评估,在表调用之后,只要它们可能发生).

我希望能够在方法调用中创建表和关联.因此,我可以传递新数据库文件的名称:

def create_tables_and_schema (database_name)
    db = Sequel.Sqlite(database_name)
    db.create_table... #three of those, as above

class Person < Sequel::Model
    unrestrict_primary_key
    many_to_many …
Run Code Online (Sandbox Code Playgroud)

ruby coding-style sequel

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

dplyr:带有NA的rowwise mutate错误

我正奇怪的错误与逐行mutatedplyr.这是一个例子:

set.seed(1)
df <- data.frame(a = rnorm(5), b = rnorm(5))
df[2,'b'] <- NA
Run Code Online (Sandbox Code Playgroud)

没有问题sum,但汇总功能有问题:

mutate(rowwise(df), sum(a, b, na.rm = T)) # works

mutate(rowwise(df), mean(a, b, na.rm = T))
#! Error: missing value where TRUE/FALSE needed
mutate(rowwise(df), median(a, b, na.rm = T))
#! Error: unused argument (-0.820468384118015)
Run Code Online (Sandbox Code Playgroud)

现在,我们可以尝试NA在第一列:

df <- data.frame(a = rnorm(5), b = rnorm(5))
df[2,'a'] <- NA

mutate(rowwise(df), sum(a, b, na.rm = T)) # works

mutate(rowwise(df), mean(a, b, na.rm = T)) …
Run Code Online (Sandbox Code Playgroud)

r na dplyr

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

标签 统计

coding-style ×1

dplyr ×1

equivalent ×1

na ×1

pandas ×1

python ×1

r ×1

ruby ×1

sequel ×1