熊猫的分组和汇总

时间:2019-04-04 05:04:47

标签: python pandas dataframe

我有一个包含两列的数据框。第一列包含years,第二列包含value。我想将某一年分组,然后将其更改为该组的名称,然后添加所有相应的值。

例如,下面是小型数据集

years    value
1950      3
1951      1
1952      2
1961      4
1964      10
1970      34

输出应类似于

years    value
1950's     6
1960's     14
1970's     34

我正在使用pandas在Python中进行尝试,并尝试了很多方法,将其转换为dict或for循环,但是每次我都无法达到预期的效果。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

使用整数除法,将多个10强制转换为字符串并添加s,并使用此系列来汇总sum

y = ((df['years'] // 10) * 10).astype(str) + 's'

df = df.groupby(y)['value'].sum().reset_index()
print (df)
   years  value
0  1950s      6
1  1960s     14
2  1970s     34

详细信息

print (y)
0    1950s
1    1950s
2    1950s
3    1960s
4    1960s
5    1970s
Name: years, dtype: object

答案 1 :(得分:1)

使用pd.cut创建组,然后使用groupby

df['year'] = pd.cut(df['year'], bins=[1949,1959,1969,1979], labels=['1950s','1960s','1970s'])

print(df.groupby('year')['value'].sum().reset_index())

输出:

   year  value                                                                                                                       
0  1950s      6                                                                                                                       
1  1960s     14                                                                                                                       
2  1970s     34