我正在处理一个相当大的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
非常感谢您提供的任何帮助或指导。
答案 0 :(得分:3)
我会先定义一个类来表示数据的一行,然后再定义该类实例的列表。
假设这是您的整个列:
FirstName |姓氏|电话| DOB |地址|国籍|年龄|
您只对FirstName
,LastName
和DOB
感兴趣。
所以我会像这样定义一个类:
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>