df2 = pd.DataFrame({'X' : ['X1', 'X1', 'X1', 'X1'], 'Y' : ['Y2','Y1','Y1','Y1'], 'Z' : ['Z3','Z1','Z1','Z2']})
X Y Z
0 X1 Y2 Z3
1 X1 Y1 Z1
2 X1 Y1 Z1
3 X1 Y1 Z2
g=df2.groupby('X')
pd.pivot_table(g, values='X', rows='Y', cols='Z', margins=False, aggfunc='count')
Run Code Online (Sandbox Code Playgroud)
回溯(最近一次调用最后一次):... AttributeError:'Index'对象没有属性'index'
如何获得一个数据透视表,其中包含另外两列的一个DataFrame列的唯一值计数?
是否有aggfunc用于计数独特之处?我应该用np.bincount()吗?
NB.我知道'系列',values_counts()但我需要一个数据透视表.
编辑:输出应该是:
Z Z1 Z2 Z3
Y
Y1 1 1 NaN
Y2 NaN NaN 1
Run Code Online (Sandbox Code Playgroud) ModelMultipleChoiceField没有选择初始选项,我无法在我的示例中进行以下修复(链接如下):
http://code.djangoproject.com/ticket/5247#comment:6
我的模特和形式:
class Company(models.Model):
company_name = models.CharField(max_length=200)
class Contact(models.Model):
company = models.ForeignKey(Company)
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
class Action(models.Model):
company = models.ForeignKey(Company, blank=True, null=True)
from_company = models.ManyToManyField(Contact, verbose_name='Participant(s) from "Company"', blank=True, null=True)
class Action_Form(ModelForm):
from_company = forms.ModelMultipleChoiceField(queryset=Contact.objects.none(), widget=forms.CheckboxSelectMultiple())
class Meta:
model = Action
Run Code Online (Sandbox Code Playgroud)
我做了什么和结果:
>>> contacts_from_company = Contact.objects.filter(company__exact=1) # "1" for test, otherwise a variable
>>> form = Action_Form(initial={'from_company': [o.pk for o in contacts_from_company]}) # as suggested in the fix
>>> print form['from_company']
<ul>
</ul>
>>> print contacts_from_company
[<Contact: test person>, <Contact: … class dbview(models.Model):
# field definitions omitted for brevity
class Meta:
db_table = 'read_only_view'
def main(request):
result = dbview.objects.all()
Run Code Online (Sandbox Code Playgroud)
抓而呈现异常:(1054,"未知列'read_only_view.ID在'字段列表’")
有没有主键,我可以在视图中看到的.有解决方法吗?
评论:
我无法控制我使用Django访问的视图.MySQL浏览器显示那里的列但没有主键.
希望这是一个简单的.
问题:Django QueryDict在列表中包装值.
这个:
data[u'test'] = [u'1', u'2']
Run Code Online (Sandbox Code Playgroud)
变为:
<QueryDict: {u'test': [[u'1', u'2']]}>
Run Code Online (Sandbox Code Playgroud)
我该怎么做:
<QueryDict: {u'test': [u'1', u'2']}>
Run Code Online (Sandbox Code Playgroud) 我有一个名为的模块multi.py.如果我只是想将multi.py作为脚本执行,那么避免在Windows上崩溃(产生无数个进程)的解决方法是将多处理代码放在:
if __name__ == '__main__':
Run Code Online (Sandbox Code Playgroud)
但是,我试图将其作为另一个脚本的模块导入并调用multi.start().如何实现这一目标?
# multi.py
import multiprocessing
def test(x):
x**=2
def start():
pool = multiprocessing.Pool(processes=multiprocessing.cpu_count()-2)
pool.map(test, (i for i in range(1000*1000)))
pool.terminate()
print('done.')
if __name__ == '__main__':
print('runs as a script,',__name__)
else:
print('runs as imported module,',__name__)
Run Code Online (Sandbox Code Playgroud)
这是我的test.py运行:
# test.py
import multi
multi.start()
Run Code Online (Sandbox Code Playgroud)