熊猫基于列查找总和

哈里安·辛格(Hariom Singh)

对于下面的数据框,我试图根据文件名找出一些代码行

    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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章