df.merge(pd.DataFrame({'Value': values}, index=indexes),
left_index=True,
right_index=True,
how='left')
Вы можете создать фрейм данных из values
& amp; index
объединить его с исходным фреймом данных, по сути делая левое соединение.
В качестве альтернативы, используя сначала комбайн, написать еще короче
df.combine_first(pd.DataFrame({'Value': values}, index=indexes))
Не уверенный, если можно использовать BoundField, но если Вы изменяете его на TemplateField, Вы могли бы использовать функцию форматирования как в этой ссылке.
т.е. что-то как
<%# FormatDataValue(DataBinder.Eval(Container.DataItem,"ItemValue")) %>
Затем в Вашем codebehind, можно добавить Защищенную Функцию
Protected Function FormatDataValue(val as object) As String
'custom enter code hereformatting goes here
End Function
Или Вы могли сделать что-то в событии OnRowCreated gridview, как в этой ссылке
<asp:GridView ID="ctlGridView" runat="server" OnRowCreated="OnRowCreated" />
эта функция является условным форматированием на основе того, является ли значение данных, аннулируют / двойное
protected void OnRowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView drv = e.Row.DataItem as DataRowView;
Object ob = drv["ItemValue"];
if (!Convert.IsDBNull(ob) )
{
double dVal = 0f;
if (Double.TryParse(ob.ToString(), out dVal))
{
if (dVal > 3f)
{
TableCell cell = e.Row.Cells[1];
cell.CssClass = "heavyrow";
cell.BackColor = System.Drawing.Color.Orange;
}
}
}
}
}
С BoundField необходимо изменить класс Объекта.
Если Вы не хотите изменять свой CodeBehind существует своего рода прием, можно сделать использование TemplateField:
<asp:GridView ID="MyTable" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="ItemName" HeaderText="Name" />
<asp:TemplateField HeaderText="Value">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# ((Eval("ItemValue") is DateTime) ? ((DateTime)Eval("ItemValue")).ToShortDateString() : Eval("ItemValue")) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
очевидно, можно сделать это для любого типа объекта, но возможно поле "Text" стало бы.. сложный..
между прочим.. мой CodeBehind для этого примера был просто, Вы классифицируете Объект и этот Page_Load ():
protected void Page_Load(object sender, EventArgs e)
{
Item i1 = new Item();
i1.ItemName = "name1";
i1.ItemValue = "foo";
Item i2 = new Item();
i2.ItemName = "name2";
i2.ItemValue = DateTime.Now;
List<Item> list1 = new List<Item>();
list1.Add(i1);
list1.Add(i2);
MyTable.DataSource = list1;
MyTable.DataBind();
}
и результат был корректен ;)