所以说我有这个数据框
data = [['MS', 'Boston', 'emergency', 'hname11'], ['MS', 'Boston', 'emergency', 'hname47'], ['MS', 'Boston', 'normal', 'hname72'], ['MS', 'Cambridge', 'emergency', 'hname32'], ['FL', 'Miami', 'normal', 'hname67'], ['CA', 'Los Angeles', 'emergency', 'hname91']]
df = pd.DataFrame(data, columns = ['state', 'city', 'status', 'name'])
df
state city status name
0 MS Boston emergency hname11
1 MS Boston emergency hname47
2 MS Boston normal hname72
3 MS Cambridge emergency hname32
4 FL Miami normal hname67
5 CA Los Angeles emergency hname91
所以我需要计算每个城市的紧急情况和正常值,并将其作为一列,就像这样
state city emergency_count normal_count
MS Boston 2 1
MS Cambridge 1 0
FL Miami 0 1
CA Los Angeles 1 0
我的目标是每个城市只有一个描述性行,而不是包含分裂信息的几行。 到目前为止,我一直在使用groupby,我几乎可以得到所需的东西
df.groupby(['state', 'city'])['status'].value_counts().reset_index(name='total')
state city status total
0 CA Los Angeles emergency 1
1 FL Miami normal 1
2 MS Boston emergency 2
3 MS Boston normal 1
4 MS Cambridge emergency 1
但是我无法创建每个城市的紧急状态和正常状态总和的列。