按不同数据表中的列值划分列中的单元格值

时间:2016-03-03 16:47:13

标签: python pandas dataframe

在下表中,我试图找到“案件数量”作为每个Make的总和百分比('案例数')

              Make  | age | mileage   |  Test Result  | Number of Cases
0            ABARTH   0-3   <10,000           P                6
1            ABARTH   0-3   <50,000           P               23
2            ABARTH   0-3   <50,000           F                2
3            ABARTH   0-3   <50,000         PRS                1
4            ABARTH   0-3  <100,000           P                2
5            ABARTH   0-3  <100,000           F                1
6            ABARTH   3-5   <10,000           P                5
7            ABARTH   3-5   <50,000           P               77

因此,我将表格分组如下:

Make                    Number of Cases

ABARTH                         139
AC                              30
AC (ELECTRIC)                   33
ACCESS                           7

尝试使用for循环并附加我需要的值,但是没有结果,因为我很确定我使用了append函数错误:

rate = pd.Series()

for index, row in pass_rates.iterrows():
    rate.append(row['Number of Cases']/test_makes[test_makes['Make'] == row['Make']])

返回对象是一个空系列

所以基本上我要找的结果看起来应该是这样的

              Make  | age | mileage   |  Test Result  |        %
0            ABARTH   0-3   <10,000           P              0.043
1            ABARTH   0-3   <50,000           P              0.165
2            ABARTH   0-3   <50,000           F              0.014

1 个答案:

答案 0 :(得分:1)

要获得结果,我只是根据groupby结果向现有DataFrame添加Total Cases列,然后在现有DataFrame中进行划分。

total_cases = df.groupby('Make')['Number of Cases'].sum()
df['Total Cases'] = df['Make'].map(total_cases)
df['%'] = df['Number of Cases'] / df['Total Cases']

此时,如果您不想再保留,则可以删除Total Cases列。