我有一个数据集,其中有成组的个人决策。对于每个人,我需要他/她的小组成员的所有决定的汇总(即总和)。所以说数据看起来像:
set.seed(123)
group_id <- c(sapply(seq(1, 3), rep, times = 3))
person_id <- rep(seq(1,3),3)
decision <- sample(1:10, 9, replace=T)
df <-data.frame(group_id, person_id, decision)
df
Run Code Online (Sandbox Code Playgroud)
结果是:
group_id person_id decision
1 1 1 3
2 1 2 8
3 1 3 5
4 2 1 9
5 2 2 10
6 2 3 1
7 3 1 6
8 3 2 9
9 3 3 6
Run Code Online (Sandbox Code Playgroud)
我需要产生这样的东西:
group_id person_id decision others_decision
1 1 1 3 13
2 1 2 8 8
3 1 …Run Code Online (Sandbox Code Playgroud) 我知道如何获取调用方法名称(从这里:如何在被调用的方法中获取调用方的方法名称?)
import sys
print sys._getframe().f_back.f_code.co_name
Run Code Online (Sandbox Code Playgroud)
我想得到的是这个方法所属的类名(假设它在类中).因此,如果:
def get_some_info():
print('Class name of caller:', XXX)
class Base:
def my_method(self):
get_some_info()
class A(Base):
pass
class B(Base):
pass
a = A()
b = B()
a.my_method()
b.my_method()
Run Code Online (Sandbox Code Playgroud)
应该返回:
... A
... B
Run Code Online (Sandbox Code Playgroud)
我该怎么办xxx?
我试过(使用信息_getframe)做类似的事情:
sys._getframe().f_back.f_code.__self__
Run Code Online (Sandbox Code Playgroud)
但它不起作用
更新:
我不能将类名传递给被调用的函数(否则这很容易,但感谢所有提出此解决方案的人!)
使用Options API,我像这样验证了我的表单:
模板:
<v-form ref="form" v-model="valid" lazy-validation @submit.prevent>
...
Run Code Online (Sandbox Code Playgroud)
脚本:
methods: {
validate() {
this.$refs.form.validate();
...
}
}
Run Code Online (Sandbox Code Playgroud)
现在,使用 new Composition API,我如何调用validate()表单?
我有一组管道操作符 ( %>%)链,用不同的数据集做不同的事情。
例如:
dataset %>%
mutate(...) %>%
filter(...) %>%
rowwise() %>%
summarise() %>%
etc...
Run Code Online (Sandbox Code Playgroud)
如果我想重用这些链的某些部分,有没有办法做到这一点,而不仅仅是将它包装成一个函数?例如(显然是伪代码):
subchain <- filter(...) %>%
rowwise() %>%
summarise()
# and then instead of the chain above it would be:
dataset %>%
mutate(...) %>%
subchain() %>%
etc...
Run Code Online (Sandbox Code Playgroud) 为了通过 mTurk 向 SQS 发送消息,SendMessage应该给予相应的权限。在文档中,他们说 Principal 应该是mturk-requester.amazonaws.com. 因此,有效的策略如下所示:
"Principal": {
"Service": "mturk-requester.amazonaws.com"
},
Run Code Online (Sandbox Code Playgroud)
这可以通过 Boto3.SQS.addPermission 来完成。像那样:
response = client.add_permission(
QueueUrl='string',
Label='string',
AWSAccountIds=[
'string',
],
Actions=[
'string',
]
)
Run Code Online (Sandbox Code Playgroud)
但我不明白如何将正确的 Principal 添加到AWSAccountIds字段中。我在mturk-requester.amazonaws.com那里使用的所有尝试都失败了。
我究竟做错了什么?
jsconfig.json我的反应应用程序的根目录中有以下内容:
{
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"rmv": ["components/rmv/*"]
}
}
}
Run Code Online (Sandbox Code Playgroud)
并且文件夹helper.jsx中有一个文件./src/components/rmv。
但我尝试像这样直接导出它:
import Helper from 'rmv/helper'
失败并出现错误:
Failed to compile
Module not found: Can't resolve 'rmv/helper'
Run Code Online (Sandbox Code Playgroud)
只import Helper from 'components/rmv/helper'有效。为什么?PS:我也尝试过:
"paths": {
"rmv/*": ["components/rmv/*"]
}
Run Code Online (Sandbox Code Playgroud)
也不行。
这是最小的可重现示例:github.com/chapkovski/trouble_with_jsconfig
这是一个非常幼稚的问题,但我觉得我不了解有关 django 和 python 中异步/后台任务的一些基本知识。
我尝试复制 django-background-tasks ( https://github.com/collinmutembei/django-background-tasks-example )提供的一个简单示例,以使 django 在实际运行 60 秒后执行后台任务. 但我想这同样适用于任何其他后台任务管理器,例如 Celery 或 Huey
这个例子非常简单——一旦用户访问了 url,一个简单的打印消息的函数就会被执行而不会阻塞主 django 进程,60 秒后
from background_task import background
from logging import getLogger
logger = getLogger(__name__)
@background(schedule=60)
def demo_task(message):
logger.debug('demo_task. message={0}'.format(message))
Run Code Online (Sandbox Code Playgroud)
问题是我真的不了解基础知识。除非我启动一个单独的(或分离的)进程,否则它不会运行python manage.py process_tasks。我应该总是这样做以使后台任务工作,还是有一种方法可以在不启动并行进程的情况下做到这一点?
如果我应该启动一个并行进程,我可以从 django 代码内部进行吗?就像是:
import subprocess
process = subprocess.Popen(['python', 'manage.py','process_tasks'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud) 我使用一个专门的 python 模块,它在运行时修改一些 Django 类方法(又名猴子修补)。如果我需要这些“旧”版本,是否可以“返回”它们并覆盖猴子补丁?
例如,导入这些类的初始版本之类的东西?
以下是如何在包中完成修补的示例:
from django.template.base import FilterExpression
def patch_filter_expression():
original_resolve = FilterExpression.resolve
def resolve(self, context, ignore_failures=False):
return original_resolve(self, context, ignore_failures=False)
FilterExpression.resolve = resolve
Run Code Online (Sandbox Code Playgroud) 我在 Django 中有一个自定义包含标签,我需要将一个列表作为参数传递给那里。沿着这些路线的东西:
{% my_tag paramA='asdf' paramB='fdsa' listparams=['X', 'Y'] %}
Run Code Online (Sandbox Code Playgroud)
这当然不起作用,因为 Django 不知道如何处理以这种方式传递的列表。
我还可以捕获一些一般的东西list_,然后将它们组合到服务器端的列表中:
{% my_tag paramA='asdf' paramB='fdsa' list_1='X' list_2='Y' list_3='Z' %}
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有更好的方法来处理这个问题。
我在 R 中有很多数据框,它们看起来像这样:
A B
1 0
2 0
3 0
4 1
5 1
6 1
Run Code Online (Sandbox Code Playgroud)
因此,在 3 和 4 之间,B 将值从 0 更改为 1。R返回AwhereB更改值的值的最有效方法是什么?
数据中B的值只更改一次,并A进行排序(从 1 到 n)。
我使用UserCreationForm来创建新用户.
from django.contrib.auth.forms import UserCreationForm
class RegistrationForm(UserCreationForm):
class Meta:
model = User
fields = ['username', 'first_name', 'last_name', 'email', 'is_active']
Run Code Online (Sandbox Code Playgroud)
UserCreationForm自动添加两个字段(Password1和Password2).如果密码太短,则会引发错误,告诉它.或者,如果它太简单或常见.这是通过django.contrib.auth.password_validation.
我想知道我是否可以覆盖这些错误的消息.
现在密码验证的源代码是:
def validate(self, password, user=None):
if len(password) < self.min_length:
raise ValidationError(
ungettext(
"This password is too short. It must contain at least %(min_length)d character.",
"This password is too short. It must contain at least %(min_length)d characters.",
self.min_length
),
code='password_too_short',
params={'min_length': self.min_length},
)
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在表单定义中使用此代码来覆盖此错误消息时,标签会更改,但error_messages保持不变:
password1 = forms.CharField(label='New Label', error_messages={'password_too_short': 'My error message for …Run Code Online (Sandbox Code Playgroud) 有一个包含嵌套信息的数据框.让我们说出每所学校的学生人数,A班学生人数和B班学生人数.因此,学生= n.pupilsA + n.pupilsB + other_pupils
a <- data.frame(
city = c(rep('New York',3), rep('Washington',3)),
n = c(5, 2, 1, 5, 2, 1),
name = c(
'pupils',
'classA',
'classB',
'pupils',
'classA',
'classB'
)
)
Run Code Online (Sandbox Code Playgroud)
输出:
city n name
1 New York 5 pupils
2 New York 2 classA
3 New York 1 classB
4 Washington 5 pupils
5 Washington 2 classA
6 Washington 1 classB
Run Code Online (Sandbox Code Playgroud)
是否有一种聪明的方法(使用dplyr,大概是)进行小组操作,这将增加每个组"其他",这将是"学生"和"学生 - A级"+"学生 - B级"之间的差异.所以结果会是这样的:
city type npupils
1 New York classA 2
2 New York …Run Code Online (Sandbox Code Playgroud) 如果我尝试将 ion range-slider 的默认颜色(可在此处获得:https : //github.com/IonDen/ion.rangeSlider)从红色(默认)更改为蓝色,如下所示:
.irs-slider.single {
background: blue;
}
Run Code Online (Sandbox Code Playgroud)
它变成正方形:
我究竟做错了什么?
演示
https://jsfiddle.net/chapkovski/xpvt214o/995048/
.irs-slider.single {
background: blue;
}
Run Code Online (Sandbox Code Playgroud)
$(".js-range-slider").ionRangeSlider({
type: "single",
min: 0,
max: 1000,
from: 200,
to: 500,
grid: true
});Run Code Online (Sandbox Code Playgroud)
.irs-slider.single {
background: blue;
}Run Code Online (Sandbox Code Playgroud)