在Excel Pivot表报告中,可以通过插入"计算字段"来进行用户干预,以便用户可以进一步操作报告.这似乎是在数据透视表之外的数据透视表数据上使用公式的最佳方法,原因很明显.
"计算字段"对话框,如下所示:

虽然很容易在可用变量之间进行计算(如屏幕截图所示)但我找不到如何为任何可用变量引用值范围.
例如,如果由于某种原因我想将数据居中在A1:A100我使用的范围内= A1 - AVERAGE(A1:A100)并填充常规Excel表格中的所有行.但对于Pivot表,如果我使用"计算字段"对话框并使用公式添加新变量:= 'Actual Sales' - AVERAGE('Actual Sales')我得到0输出.
所以我的问题是如何在"计算字段"对话框中引用"实际销售额"变量的整个范围,以便AVERAGE()返回所有目标单元格的平均值?
我想知道如何在我的数据透视表中添加加权平均值.实际上,我需要做以下计算:SUM(col1 * col2)/SUM(col2).
我试图通过使用计算字段选项来做到这一点但是当我输入我的公式时,我只有以下结果作为输出:SUM((col1 * col2)/col2)它等于SUM(col1).
我想将从数据透视表派生的Pandas DataFrame转换为行表示,如下所示.
这就是我所在的地方:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'goods': ['a', 'a', 'b', 'b', 'b'],
'stock': [5, 10, 30, 40, 10],
'category': ['c1', 'c2', 'c1', 'c2', 'c1'],
'date': pd.to_datetime(['2014-01-01', '2014-02-01', '2014-01-06', '2014-02-09', '2014-03-09'])
})
# we don't care about year in this example
df['month'] = df['date'].map(lambda x: x.month)
piv = df.pivot_table(["stock"], "month", ["goods", "category"], aggfunc="sum")
piv = piv.reindex(np.arange(piv.index[0], piv.index[-1] + 1))
piv = piv.ffill(axis=0)
piv = piv.fillna(0)
print piv
Run Code Online (Sandbox Code Playgroud)
结果
stock
goods a b
category …Run Code Online (Sandbox Code Playgroud) 我有一个谷歌应用程序脚本,它将信息提交给有组织的工作表,并希望创建一个包含工作表中所有信息的数据透视表.我可以这样做,但每当我向工作表提交一行新数据时,它都不会自动包含在数据透视表中.每次提交新的数据行时,我都必须手动更改数据透视表的范围.有什么方法可以让sheet/pivot表自动包含新的数据行吗?
我试图从使用数据透视表缓存的数据透视表中提取源数据并将其放入空白电子表格.我尝试了以下但它返回应用程序定义或对象定义的错误.
ThisWorkbook.Sheets.Add.Cells(1,1).CopyFromRecordset ThisWorkbook.PivotCaches(1).Recordset
Run Code Online (Sandbox Code Playgroud)
文档表明PivotCache.Recordset是一个ADO类型,所以这应该工作.我确实在引用中启用了ADO库.
有关如何实现这一目标的任何建议?
我可以使用VBA创建一个新的ADODB.Connection和相关的ADODB.Command和ADOBD.Parameter,然后创建一个PivotCache和一个数据透视表
Sub CreatePivotTable()
'Declare variables
Dim objMyConn As ADODB.Connection
Dim objMyCmd As ADODB.Command
Dim objMyParam As ADODB.Parameter
Dim objMyRecordset As ADODB.Recordset
Set objMyConn = New ADODB.Connection
Set objMyCmd = New ADODB.Command
Set objMyRecordset = New ADODB.Recordset
'Open Connection'
objMyConn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=myMIS;Data Source=localhost;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=WKSTN101;Use Encryption for Data=False;Tag with column collation when possible=False"
objMyConn.Open
'Set and Excecute SQL Command'
Set objMyCmd.ActiveConnection = objMyConn
objMyCmd.CommandText = "select a.col1, a.col2, b.col3, b.col4" & _
"from …Run Code Online (Sandbox Code Playgroud) 鉴于以下pandas数据框:
df = pd.DataFrame({'A': ['foo' ] * 3 + ['bar'],
'B': ['w','x']*2,
'C': ['y', 'z', 'a','a'],
'D': rand.randn(4),
})
print df.to_string()
"""
A B C D
0 foo w y 0.06075020
1 foo x z 0.21112476
2 foo w a 0.01652757
3 bar x a 0.17718772
"""
Run Code Online (Sandbox Code Playgroud)
注意没有bar,w组合.执行以下操作时:
pv0 = pandas.pivot_table(df, rows=['A','B'],cols=['C'], aggfunc=numpy.sum)
pv0.ix['bar','x'] #returns result
pv0.ix['bar','w'] #key error though i would like it to return all Nan's
pv0.index #returns
[(bar, x), (foo, w), (foo, x)]
Run Code Online (Sandbox Code Playgroud)
只要在'C'列中至少有一个条目与foo,x的情况一样(它在'C'列中只有'z'的值),它将为其他列值返回NaN' C'不存在于foo,x(例如'a','y')
我想要的是拥有所有多索引组合,即使那些没有所有列值数据的组合.
pv0.index …Run Code Online (Sandbox Code Playgroud) 我有3个表:posts,tags,post_tag.
每个Post都有很多标签,所以我使用hasMany它们的方法.但是当我在下拉列表中选择3个标签时,我无法添加它们,post_tag因此我无法选择并显示每个帖子的标签.
我的Post模特:
class Post extends Eloquent{
public function tag()
{
return $this->hasMany('Tag');
}
}
Run Code Online (Sandbox Code Playgroud)
我的Tag模特:
class Tag extends Eloquent{
public function post()
{
return $this->belongsToMany('Post');
}
Run Code Online (Sandbox Code Playgroud)
}
我的postController:
class postController extends BaseController{
public function addPost(){
$post=new Post;
$post_title=Input::get('post_title');
$post_content=Input::get('post_content');
$tag_id=Input::get('tag');
$post->tag()->sync($tag_id);
$post->save();
Run Code Online (Sandbox Code Playgroud)
我希望将此post_id保存保存到post_tag带有标签ID的表中,但它不起作用.谢谢你的时间.
我是新手reshape2,data.table并试图学习语法.
我有一个data.table我想从每个分组变量的多行转换为每个分组变量一行.为简单起见,我们让它成为一个客户表,其中一些客户共享地址.
library(data.table)
# Input table:
cust <- data.table(name=c("Betty","Joe","Frank","Wendy","Sally"),
address=c(rep("123 Sunny Rd",2),
rep("456 Cloudy Ln",2),
"789 Windy Dr"))
Run Code Online (Sandbox Code Playgroud)
我希望输出具有以下格式:
# Desired output looks like this:
(out <- data.table(address=c("123 Sunny Rd","456 Cloudy Ln","789 Windy Dr"),
cust_1=c("Betty","Frank","Sally"),
cust_2=c("Joe","Wendy",NA)) )
# address cust_1 cust_2
# 1: 123 Sunny Rd Betty Joe
# 2: 456 Cloudy Ln Frank Wendy
# 3: 789 Windy Dr Sally NA
Run Code Online (Sandbox Code Playgroud)
我想要cust_1 ... cust_n的列,其中n是每个地址的最大客户数.我并不关心订单 - Joe是否是cust_1而Betty是cust_2,反之亦然.
对于这样的数据帧:
d = {'id': [1,1,1,2,2], 'Month':[1,2,3,1,3],'Value':[12,23,15,45,34], 'Cost':[124,214,1234,1324,234]}
df = pd.DataFrame(d)
Cost Month Value id
0 124 1 12 1
1 214 2 23 1
2 1234 3 15 1
3 1324 1 45 2
4 234 3 34 2
Run Code Online (Sandbox Code Playgroud)
我应用pivot_table
df2 = pd.pivot_table(df,
values=['Value','Cost'],
index=['id'],
columns=['Month'],
aggfunc=np.sum,
fill_value=0)
Run Code Online (Sandbox Code Playgroud)
得到df2:
Cost Value
Month 1 2 3 1 2 3
id
1 124 214 1234 12 23 15
2 1324 0 234 45 0 34
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法来格式化结果数据帧列名称,如
id Cost1 Cost2 Cost3 Value1 Value2 …Run Code Online (Sandbox Code Playgroud) pivot-table ×10
excel ×4
pandas ×3
python ×3
vba ×2
data.table ×1
eloquent ×1
excel-2010 ×1
laravel ×1
php ×1
r ×1
reshape ×1
reshape2 ×1