搜索,排序和保存大型电子表格

时间:2017-09-15 17:34:56

标签: c# datagridview datagridviewcolumn

我正在处理一个相当大的Excel电子表格,并试图找到操纵数据的最快方法。电子表格包含31列和15,000行。我需要提取大约15列信息。使用这么多数据时是否有最佳实践?我无法使用任何类型的数据库(例如SQL)。

我考虑过创建一个列表或字典,然后根据列将单元格值放入他们自己的List / Dictionary中,然后迭代这些,但我不确定它的速度有多快或者它是否有多快。值得一试。

df.assign(**{
    'Full Name':
        df['Full Name'].fillna(df['First Name'].str.cat(df['Last Name'], sep=' '))
})

  First Name Last Name Full Name
0          a         b       a b
1         a1        b1     a1 b1
2         a2        b2     a2 b2
3        NaN       NaN     a3 b3

非常感谢您提供的任何帮助或指导。

1 个答案:

答案 0 :(得分:3)

我会先定义一个类来表示数据的一行,然后再定义该类实例的列表。

假设这是您的整个列:

  

FirstName |姓氏|电话| DOB |地址|国籍|年龄|

您只对FirstNameLastNameDOB感兴趣。

所以我会像这样定义一个类:

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime DOB { get; set; }
}

然后创建该类实例的列表。

private List<Person> people = new List<Person>();

然后,不是先遍历列,而是在遍历行的循环中,我会反过来讨论它。

foreach(DatagridViewRow row in DatagridView2.Rows)
{
    Person p = new Person();
    p.FirstName = row[0];
    p.LastName = row[1];
    p.DOB = row[3];
    people.Add(p);
}

显然上面是一些伪代码,不会编译。这只是为了向您展示这个想法。这有一个很大的好处,就是将一行相关的数据作为列表中的一个项目,而不是为单独的列创建单独的列表,在这种情况下,您将不得不花费更多时间来查找相关数据。 / p>