Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据dupliacte列名添加和_Python_Python 3.x_Pandas - Fatal编程技术网

Python 根据dupliacte列名添加和

Python 根据dupliacte列名添加和,python,python-3.x,pandas,Python,Python 3.x,Pandas,对于以下数据帧df Filename Language Repo/Repo_3/.travis.yml YAML 20 Repo/Repo_3/backup_automater_services.py Python 18 Repo/Repo_3/batch_file_rename.py Python 33 Repo/Repo_

对于以下数据帧df

Filename                                   Language    
Repo/Repo_3/.travis.yml                    YAML        20
Repo/Repo_3/backup_automater_services.py   Python      18
Repo/Repo_3/batch_file_rename.py           Python      33
Repo/Repo_3/cbd_pennies.                   C           26
Repo/Repo_3/cbd_rand.                      C           19
Repo/Repo_3/cbd_rand_dist.                 C           20
Repo/Repo_3/chaos.py                       Python       8
Repo/Repo_3/chapter02/item01/Provider.jav  Java         4
Repo/Repo_3/chapter02/item01/Service.jav   Java         3
Repo/Repo_3/chapter02/item01/Services.jav  Java        25
试图找到一种在语言列中查找重复项总和的方法。 所有C语言或Python语言的总和

Filename                                   Language    Sum of All  
Repo/Repo_3                                YAML        20 
Repo/Repo_3                                Python      118
Repo/Repo_3                                C           120
Repo/Repo_3                                Java        125
尝试使用groupby,但运气不佳

df.groupby(['Filename', 'Language'])['Code Lines'].sum()

您分组所依据的
文件名
与您尝试合并的行不同。您可以从
groupby
中删除该列,或者添加一个对所有行都相同的新列

仅针对您显示的数据帧:

df.groupby(['Language']).sum()

      Code Lines
Language            
C                 65
Java              32
Python            59
YAML              20
apply
语句在每个文件上按
/
拆分名称,并仅重新连接前两个单词,因此如果整个数据帧不遵循该约定,请根据需要进行调整

在新的专栏中:

df['Repo'] = df['Filename'].apply(lambda st: '/'.join(st.split('/')[:2]))

df.groupby(['Repo', 'Language']).sum()

                  Code Lines
Repo        Language            

Repo/Repo_3 C                 65
            Java              32
            Python            59
            YAML              20

您分组所依据的
文件名
与您尝试合并的行不同。您可以从
groupby
中删除该列,或者添加一个对所有行都相同的新列

仅针对您显示的数据帧:

df.groupby(['Language']).sum()

      Code Lines
Language            
C                 65
Java              32
Python            59
YAML              20
apply
语句在每个文件上按
/
拆分名称,并仅重新连接前两个单词,因此如果整个数据帧不遵循该约定,请根据需要进行调整

在新的专栏中:

df['Repo'] = df['Filename'].apply(lambda st: '/'.join(st.split('/')[:2]))

df.groupby(['Repo', 'Language']).sum()

                  Code Lines
Repo        Language            

Repo/Repo_3 C                 65
            Java              32
            Python            59
            YAML              20

使用
groupby
,这很简单。但是,在另一列上进行聚合时,您打算如何保留文件名

我建议使用
os.path.split
从文件名中提取绝对目录路径,并根据文件名和语言进行分组

import os

(df.assign(Filename=[os.path.split(v)[0] for v in df.Filename])
   .groupby(['Filename', 'Language'])
   .sum()
   .reset_index())

                       Filename Language  Value
0                   Repo/Repo_3        C     65
1                   Repo/Repo_3   Python     59
2                   Repo/Repo_3     YAML     20
3  Repo/Repo_3/chapter02/item01     Java     32 

使用
groupby
,这很简单。但是,在另一列上进行聚合时,您打算如何保留文件名

我建议使用
os.path.split
从文件名中提取绝对目录路径,并根据文件名和语言进行分组

import os

(df.assign(Filename=[os.path.split(v)[0] for v in df.Filename])
   .groupby(['Filename', 'Language'])
   .sum()
   .reset_index())

                       Filename Language  Value
0                   Repo/Repo_3        C     65
1                   Repo/Repo_3   Python     59
2                   Repo/Repo_3     YAML     20
3  Repo/Repo_3/chapter02/item01     Java     32 

工作正常有一个错误“DataFrameGroupBy”对象没有属性“Value”,所以更改了它(df.assign(文件名=[os.path.split(v)[0]表示df.Filename中的v])。groupby(['Filename','Language'])。sum().reset_index())工作正常有一个错误“DataFrameGroupBy”对象没有属性“Value”,所以更改了它(df.assign(文件名=[os.path.split(v)[0]用于df.Filename中的v]).groupby(['Filename','Language']).sum().reset_index())