对于下面的数据框,我试图根据文件名找出一些代码行
Blank Lines Code Lines Comment Lines Filename Language \
28 3 18 3 Repo_3 Maven
50 2 8 1 Repo_3 Python
16 8 25 5 Repo_3 Java
14 6 26 0 Repo_3 C
27 4 19 0 Repo_3 C
30 6 18 8 Repo_3 Python
11 10 33 23 Repo_3 Python
46 2 9 2 Repo_3 C++
23 0 20 6 Repo_3 YAML
52 1 4 1 Repo_3 Java
6 23 39 0 Repo_3 Markdown
24 4 20 5 Repo_3 C
3 5 42 3 Repo_3 Java
55 1 3 2 Repo_3 Java
35 3 16 15 Repo_3 C++
34 4 17 1 Repo_2 Java
1 0 53 0 Repo_2 XML
31 6 18 8 Repo_2 Python
33 4 17 1 Repo_2 Java
29 3 18 3 Repo_2 XML
36 3 16 15 Repo_2 C++
41 5 12 2 Repo_2 make
44 2 9 2 Repo_2 C++
48 2 8 1 Repo_2 Python
53 4 4 0 Repo_2 Markdown
54 1 4 1 Repo_2 Java
43 5 12 2 Repo_2 make
57 1 3 2 Repo_2 Java
26 4 19 0 Repo_2 C
18 6 23 1 Repo_2 Java
2 5 42 3 Repo_2 Java
5 23 39 0 Repo_2 Markdown
8 10 33 23 Repo_2 Python
10 0 33 0 Repo_2 Maven
17 8 25 5 Repo_2 Java
13 6 26 0 Repo_2 C
21 4 20 5 Repo_2 C
20 4 20 14 Repo_2 Java
19 4 23 0 Repo_1 C
9 10 33 23 Repo_1 Python
56 1 3 2 Repo_1 Java
22 4 20 5 Repo_1 C
4 5 42 3 Repo_1 Java
7 23 39 0 Repo_1 Markdown
51 1 4 1 Repo_1 Java
32 3 18 3 Repo_1 Maven
49 3 8 0 Repo_1 C
47 2 8 1 Repo_1 Python
37 8 16 4 Repo_1 C
45 2 9 2 Repo_1 C++
12 6 26 0 Repo_1 C
25 4 19 0 Repo_1 C
42 5 12 2 Repo_1 make
15 8 25 5 Repo_1 Java
40 5 12 2 Repo_1 make
39 3 15 0 Repo_1 C
38 3 16 15 Repo_1 C++
0 0 53 0 Repo_1 XML
像这样
Filename Total Code Lines
Repo_3 3445
Repo_2 2323
Repo_1 1134
我尝试了以下代码
listofRepo = locPd['Filename'].unique()
print(listofRepo)
print(locPd)
for repo in listofRepo:
sums = locPd[locPd['Filename'] == repo].groupby(['Filename', 'Code Lines'], as_index=False).sum()
Total_Loc = sums['Code Lines'].sum()
print(sums)
print("Total_Loc of " + str(repo) + " is " + str(Total_Loc))
Total_Loc计数是错误的,因为表被任何建议弄乱了
['Repo_3' 'Repo_2' 'Repo_1']
Filename Code Lines Blank Lines Comment Lines
0 Repo_3 3 1 2
1 Repo_3 4 1 1
2 Repo_3 8 2 1
3 Repo_3 9 2 2
4 Repo_3 16 3 15
5 Repo_3 18 9 11
6 Repo_3 19 4 0
7 Repo_3 20 4 11
8 Repo_3 25 8 5
9 Repo_3 26 6 0
10 Repo_3 33 10 23
11 Repo_3 39 23 0
12 Repo_3 42 5 3
13 Repo_3 53 0 0
Total_Loc of Repo_3 is 315
Filename Code Lines Blank Lines Comment Lines
0 Repo_2 3 1 2
1 Repo_2 4 5 1
2 Repo_2 8 2 1
3 Repo_2 9 2 2
4 Repo_2 12 10 4
5 Repo_2 16 3 15
6 Repo_2 17 8 2
7 Repo_2 18 9 11
8 Repo_2 19 4 0
9 Repo_2 20 8 19
10 Repo_2 23 6 1
11 Repo_2 25 8 5
12 Repo_2 26 6 0
13 Repo_2 33 10 23
14 Repo_2 39 23 0
15 Repo_2 42 5 3
16 Repo_2 53 0 0
Total_Loc of Repo_2 is 367
Filename Code Lines Blank Lines Comment Lines
0 Repo_1 3 1 2
1 Repo_1 4 1 1
2 Repo_1 8 5 1
3 Repo_1 9 2 2
4 Repo_1 12 10 4
5 Repo_1 15 3 0
6 Repo_1 16 11 19
7 Repo_1 18 3 3
8 Repo_1 19 4 0
9 Repo_1 20 4 5
10 Repo_1 23 4 0
11 Repo_1 25 8 5
12 Repo_1 26 6 0
13 Repo_1 33 10 23
14 Repo_1 39 23 0
15 Repo_1 42 5 3
Total_Loc of Repo_1 is 312
``添加的问题是否有办法在Repo_1中也增加文件数量或文件数量,而不是逐行重复和添加
len(df[df['Filename'].str.contains(repo)]
我认为循环是没有必要的。
您可以在list
汇总中指定列:
df = locPd.groupby('Filename', as_index=False)['Code Lines'].sum()
print (df)
Filename Code Lines
0 Repo_1 401
1 Repo_2 471
2 Repo_3 300
如果要聚合所有数字列:
df1 = locPd.groupby('Filename', as_index=False).sum()
print (df1)
Filename Blank Lines Code Lines Comment Lines
0 Repo_1 100 401 68
1 Repo_2 110 471 89
2 Repo_3 78 300 74
对于get count
,可以使用DataFrameGroupBy.agg
:
df1 = (locPd.groupby('Filename')['Code Lines']
.agg([('tot', 'sum'),('count', 'size')])
.reset_index())
print (df1)
Filename tot count
0 Repo_1 401 20
1 Repo_2 471 23
2 Repo_3 300 15
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句