Как группировать в пандах, где у меня есть значения столбцов, начинающиеся с одинаковых букв - PullRequest
0 голосов
/ 14 марта 2019

Предположим, у меня есть столбец со значениями (не имя столбца) L1 xyy, L2 yyy, L3 abc, Теперь я хочу сгруппировать L1, L2 and L3 как L (или любое другое имя также будет делать). Точно так же у меня есть другие значения, такие как A1 xxx, A2 xxx, чтобы сгруппировать форму A и так далее для других алфавитов. Как мне достичь этого в пандах? У меня есть L1, A1 и так далее в одном столбце, а не в разных столбцах.

1 Ответ

1 голос
/ 14 марта 2019

Используйте индексирование по 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
...