我从带有标题的.csv
文件导入数据表,这没问题
因此,我们调用文件dt.csv
。
一个列标题名为companyName
。
但是我需要创建一个新表,首先,我列出第一个数据表中的所有公司,并计算每个companyName
在第一个表中出现的次数。
第一个表格可以有500到5000行,但出现的不同公司数量只有15-50。面临的挑战是我不知道提前预期的公司名称,所以我不能列出一个肯定的名单来反对。我需要根据列companyName
的内容来计算要生成的列表(这样我就不会得到相同名称的重复项)。
答案 0 :(得分:0)
此代码是C#,但主要是伪代码,因为我不确定您读取/写入CSV文件的方法:
var seenCompanies = new List<string>();
foreach(var line in csvFile)
{
seenCompanies.Add(line.GetColumn("companyName"));
}
var companiesAndCounts =
seenCompanies
.GroupBy(s => s)
.Select(group => new { Name = group.Key, Count = group.Count()})
.ToList();
foreach(var group in companiesAndCounts)
{
outputFile.Write(group.Name + "," + group.Count);
}
这在概念上非常标准,你所做的只是计算每个不同公司名称的出现次数,然后将其写出来。
您可以根据自己的需要进行调整,但这足以说明如何实现这一目标。
答案 1 :(得分:0)
您也可以使用System.Generics.Dictionary
//I used this list to test, you should replace "companies" with a list from you csv file
List<string> companies = new List<string>(){"c1","c2","c1","c4","c3","c3","c3","c2"};
Dictionary<string,int> numberOfAppearance = new Dictionary<string,int>();
foreach(string company in companies)
{
if(numberOfAppearance.ContainsKey(company))
numberOfAppearance[company]++;
else
numberOfAppearance.Add(company, 1);
}
//Now numberOfAppearance["companyName"] holds the number of appearances of the company named companyName in the list
我创建了一个List以保存所有公司名称,因为我不知道如何从csv文件中存储它们,但它应该很容易适应。