如何在熊猫具有以相似字母开头的列值的大熊猫中分组

时间:2019-03-14 11:41:03

标签: pandas group-by

假设我有一列值(不是列名)为L1 xyy, L2 yyy, L3 abc,的列,现在我想将L1, L2 and L3分组为L(或其他任何名称)。 同样,我还有其他值,例如A1 xxx,A2 xxx,将被分组为A形式,以此类推。 我如何在熊猫中实现这一目标? 我在同一列中有L1,A1等,而不是不同的列。

1 个答案:

答案 0 :(得分:1)

使用str[0]的索引来返回列的第一个字母,然后聚合一些函数,例如sum

df = pd.DataFrame({'col':['L1 xyy','L2 yyy','L3 abc','A1 xxx','A2 xxx'],
                   'val':[2,3,5,1,2]})
print (df)
      col  val
0  L1 xyy    2
1  L2 yyy    3
2  L3 abc    5
3  A1 xxx    1
4  A2 xxx    2

df1 = df.groupby(df['col'].str[0])['val'].sum().reset_index(name='new')
print (df1)
  col  new
0   A    3
1   L   10

如果需要通过第一个值添加新列:

df['new'] = df['col'].str[0]
print (df)
      col  val new
0  L1 xyy    2   L
1  L2 yyy    3   L
2  L3 abc    5   L
3  A1 xxx    1   A
4  A2 xxx    2   A