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