在下表中,我试图找到“案件数量”作为每个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
答案 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列。