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的答案。是的,这就是我想要的。酷。为了将来的参考,请看