在第一列中汇总值,同时将第一列和第二列中的corespondinng值放在一起

时间:2018-03-02 16:42:08

标签: python python-3.x pandas dataframe pandas-groupby

我有3列数据。我将数据存储在csv中的三列(k,v,t)中。例如,

数据:

k v t    

a 1 2    
b 2 3    
c 3 4    
a 2 3    
b 3 2    
b 3 4    
c 3 5    
b 2 3

我想获得以下数据。基本上,将具有相同k和v的所有t的值相加。

a 1 5
b 2 6
b 3 6
c 3 9

这是我到目前为止的代码:

aList = []
aList2 = []
aList3 = []

for i in range(len(data)):
    if data['k'][i] == 'a':
        if data['v'][i] == 1:
            aList.append(data['t'][i])
        elif data['v'][i] == 2:
            aList2.append(data['t'][i])
        else:
            aList3.append(data['t'][i])

它一直持续到最后。

我使用“for loop”和“if”但它太长了。我可以用简短而干净的方式使用numpy吗?或任何其他更好的方式?

1 个答案:

答案 0 :(得分:1)

以下是使用url('^patient_summary/patientid=(?P<patient_id>\d+)&clinicid=(?P<clinic_id>\d+)/$', views.patient_summary, name='patient_summary'), url('^patient_summary/patientid=(?P<patient_id>\d+)&clinicid=(?P<clinic_id>\d+)/careplanid=(?P<careplan_id>\d+)/$', views.care_plan, name='care_plan'), 的一种解决方案。

首先创建一个数据帧,然后执行pandas操作。以下代码假定您的数据存储在csv文件中。

groupby

<强>结果

df = pd.read_csv('file.csv')

g = df.groupby(['k', 'v'], as_index=False)['t'].sum()