小编Fra*_*rio的帖子

使用 pandas 将列添加到数据透视表

我有如下表:

import pandas as pd
import numpy as np

#simple table
fazenda = [6010,6010,6010,6010]
quadra = [1,1,2,2]
talhao = [1,2,3,4]
arTotal = [32.12,33.13,34.14,35.15]
arCarr = [i/2 for i in arTotal]
arProd = [i/2 for i in arTotal]
varCan = ['RB1','RB2','RB3','RB4']
data = list(zip(fazenda,quadra,talhao,arTotal,arCarr,arProd,varCan))

#Pandas DataFrame
df = pd.DataFrame(data=data,columns=['Fazenda','Quadra','Talhao','ArTotal','ArCarr','ArProd','Variedade'])

#Pivot Table
table = pd.pivot_table(df, values=['ArTotal','ArCarr','ArProd'],index=['Quadra','Talhao'], fill_value=0)

print(table)
Run Code Online (Sandbox Code Playgroud)

结果是这样的:

               ArCarr  ArProd  ArTotal
Quadra Talhao                         
1      1       16.060  16.060    32.12
       2       16.565  16.565    33.13
2      3       17.070  17.070    34.14
       4       17.575  17.575    35.15 …
Run Code Online (Sandbox Code Playgroud)

python numpy pivot-table pandas

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

当 DataSource 是 BindingList 时过滤 BindingSource

我从excel表中读取并为BindingList写了这个,在Form_Load中,它被设置为一个数据源作为BindingSource:

bd = new BindingSource(); //instance of BindingSource
bd.DataSource = ExcelOPS.LerExcel(); //LerExcel() method return a BindingList<T>

gvFiltro.DataSource = bd; //set a DataGridView named gvFiltro DataSource property
bindNav.BindingSource = bd; //set a BindingNavigator source
Run Code Online (Sandbox Code Playgroud)

这工作很好!我打算为此 DataGridView gvFiltro 创建一个组合框作为过滤器,因此在组合框的 SelectedIndexChanged 事件中,我尝试这样做:

this.gvFiltro.DataSource = null;
bd.Filter = string.Format("TAG_FAZENDA like '%{0}%'", cbTagFaz.Text);
gvFiltro.DataSource = bd;
gvFiltro.Update();
gvFiltro.Refresh();

bindNav.BindingSource = bd;
bindNav.Update();
bindNav.Refresh();
Run Code Online (Sandbox Code Playgroud)

但是 DataGridView 不会改变。我错过了什么?

.net c# datagridview bindingsource winforms

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

标签 统计

.net ×1

bindingsource ×1

c# ×1

datagridview ×1

numpy ×1

pandas ×1

pivot-table ×1

python ×1

winforms ×1