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

Pandas 如何在具有以类似字母开头的列值的熊猫中分组,pandas,group-by,Pandas,Group By,假设我有一个列的值(不是列名)l1xyy,l2yyy,l3abc,现在我想将L1,L2和L3分组为L(或任何其他名称也可以)。 类似地,对于其他字母表,我还有其他的值,比如a1xxx,a2xxx,以A的形式分组,等等。 我如何在熊猫身上做到这一点? L1、A1等都在同一列中,而不是不同的列。使用str[0]索引返回列的第一个字母,然后聚合一些函数,例如sum: df = pd.DataFrame({'col':['L1 xyy','L2 yyy','L3 abc','A1 xxx','A2 xx

假设我有一个列的值(不是列名)
l1xyy,l2yyy,l3abc,
现在我想将
L1,L2和L3
分组为L(或任何其他名称也可以)。 类似地,对于其他字母表,我还有其他的值,比如a1xxx,a2xxx,以A的形式分组,等等。 我如何在熊猫身上做到这一点?
L1、A1等都在同一列中,而不是不同的列。

使用
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

您可以制作一个示例数据帧和一个预期的输出吗?这是一列还是全部df列只有一列。检查下面jez的答案。是的,这就是我想要的。酷。为了将来的参考,请看