我有如下表:
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) 我从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 不会改变。我错过了什么?