簡體   English   中英

在大熊貓的groupby之后添加新列

[英]Add a new column after groupby in pandas

我正在使用熊貓處理具有以下結構的csv文件

date, student, score, outof
20040601,mark,80,100
20040601,jack,40,100
20040602,mark,60,100
20040602,jack,30,100

我想按日期對上述數據進行分組,然后計算每個日期的百分比,然后將其繪制出來。

我可以使用以下代碼來進行分組

import pandas as pd
data = pd.read_csv("csv_file")
grouped_by_date = data.groupby('date')

我還可以使用以下代碼來計算每一行的百分比

import pandas as pd
data = pd.read_csv("csv_file")
date['percentage'] = data['score']/data['outof']

但是我無法對分組數據進行處理。 如何對數據進行分組?

編輯

以下是我想要的期望輸出

date, percentage
20040601,60
20040602,45

以下是我會做的事情:

>>> df.set_index(['date'], inplace=True)
>>> df['percentDate'] = df.groupby(level=0).apply(lambda x: np.mean(x['score']/x['outof']))
>>> df
Out[391]: 
         student  score  outof  percentDate
date                                         
20040601    mark     80    100           0.60
20040601    jack     40    100           0.60
20040602    mark     60    100           0.45
20040602    jack     30    100           0.45

首先,由於您想將數據值作為一列設置到數據框中,因此最好根據分組依據來設置索引:這使以后(對我來說)設置值更加容易。

其次,觀察一下我使用了numpy的mean()函數:由於score / outof將返回一列觀察值(每位學生一行),因此您必須對此進行平均。

只是:

data['percentage'] = data.score/data.outof
data.groupby('date').mean()

產量:

          score  outof  percentage
date                              
20040601     60    100        0.60
20040602     45    100        0.45

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM