我希望有人可以帮助我做一些相对简单的事情。最近,我使用groupby
对df
中的不同群组进行了总结,如下所示:
MSA.name ifr.industry
0 Abilene, TX Metro Area 90
1 Abilene, TX Metro Area P
2 Abilene, TX Metro Area 90
3 Abilene, TX Metro Area F
4 Abilene, TX Metro Area 90
5 Abilene, TX Metro Area 90
6 Abilene, TX Metro Area 90
7 Abilene, TX Metro Area 90
然后,我通过df.groupby(['MSA.name', 'ifr.industry'])['employees'].sum()
MSA.name ifr.industry employees
Abilene, TX Metro Area 10-12 720
13-15 70
16 87
17-18 54
20-21 77
22 403
23 324
24 383
25 701
28 310
29 198
30 233
但是,我想将其合并回原始版df
,但我无法轻易看到如何做到这一点。我想知道groupby()
之后MSA.name
是否有groupby()
列出每个观察import matplotlib.pyplot as plt
from matplotlib import six
import pandas as pd
import numpy as np
df = pd.DataFrame()
df['x'] = np.arange(0,11)
df['y'] = df['x']*2
fig = plt.figure(figsize=(8,5))
ax1 = fig.add_subplot(121)
ax1.scatter(x=df['x'],y=df['y'])
ax2 = fig.add_subplot(122)
font_size=14
bbox=[0, 0, 1, 1]
ax2.axis('off')
mpl_table = ax2.table(cellText = df.values, rowLabels = df.index, bbox=bbox, colLabels=df.columns)
mpl_table.auto_set_font_size(False)
mpl_table.set_fontsize(font_size)
的方式。
答案 0 :(得分:3)
首先尝试df.groupby(['MSA.name', 'ifr.industry'])['employees'].sum().reset_index()
此外,您在此处不需要使用merge
transform
df['sum']=df.groupby(['MSA.name', 'ifr.industry'])['employees'].transform(sum)