2017-02-01 5 views
1

Я группирую список транзакций по британскому почтовому индексу, но я хочу группировать только по первой части почтового индекса. Таким образом, британские почтовые коды находятся в двух частях, наружу и внутрь, разделенных пробелом. например W1 5DA.Python Groupby часть строки

subtotals = df.groupby('Postcode').count() 

ли способ, что я делаю это сейчас, как я думал, что делать это на данный момент, является добавлением столбца в DataFrame только с первым словом столбца Почтового индекса, а затем группировкой по что ... но мне интересно, есть ли более простой способ сделать это.

Спасибо

+0

разграничиваются ваши почтовые индексы в космосе, например ''W1 5DA'? Если это так, вы можете добавить новый столбец для первой части 'df ['city_code'] = df ['Postcode']. Str.split(). Str [0]' – EdChum

+0

Просьба предоставить [mcve]. Ненавижу, чтобы читать между строк и понять, что вы на самом деле имели в виду. – MYGz

+0

Я думаю, вам нужно 'subtotals = df.groupby (df ['Postcode']. Str.split(). Str [0]). Count()' – jezrael

ответ

3

Я думаю, что вам нужно groupby по Series созданный split первым пространством:

subtotals = df.groupby(df['Postcode'].str.split().str[0]).count() 

Пример:

df = pd.DataFrame({'Postcode' :['W1 5DA','W1 5DA','W2 5DA']}) 
print (df) 
    Postcode 
0 W1 5DA 
1 W1 5DA 
2 W2 5DA 

print (df['Postcode'].str.split().str[0]) 
0 W1 
1 W1 
2 W2 
Name: Postcode, dtype: object 

subtotals = df.groupby(df['Postcode'].str.split().str[0]).count() 
print (subtotals) 
      Postcode 
Postcode   
W1    2 
W2    1 

Проверить также What is the difference between size and count in pandas?

+0

это отлично работало btw –

+0

Супер, если бы мой ответ был полезен, Не забудьте [принять] (http://meta.stackexchange.com/a/5235/295067). Благодарю. – jezrael