Есть ли функция, которую я могу разделить значения в таблице на более мелкие подгруппы? - PullRequest
1 голос
/ 30 октября 2019
index   city       state_id   state_name       county_name      zip_codes

12846   Alpine         CA         California    San Diego      91901 91903  

12860   Granite Hills   CA       California    San Diego        92021 92019

12975   Casa de Oro-Mount  CA   California     San Diego    91977 91941 92020 91976 

Мне нужно разбить почтовые индексы на подгруппы, но я хочу иметь одинаковые строки с одинаковыми значениями, например:

index   city       state_id   state_name       county_name      zip_codes

12846   Alpine         CA         California    San Diego      91901 
12846   Alpine         CA         California    San Diego      91903    

12860   Granite Hills   CA       California    San Diego        92021 
12860   Granite Hills   CA       California    San Diego        92019

12975   Casa de Oro-Mount  CA   California     San Diego         91977  
12975   Casa de Oro-Mount  CA   California     San Diego         91941 
12975   Casa de Oro-Mount  CA   California     San Diego         92020 
12975   Casa de Oro-Mount  CA   California     San Diego         91976

1 Ответ

0 голосов
/ 30 октября 2019

Решение для панд 0,25+ - используйте Series.str.split с DataFrame.assign в том же столбце для списков, а затем используйте DataFrame.explode:

df1 = df.assign(zip_codes = df['zip_codes'].str.split()).explode('zip_codes')
print (df1)
                    city state_id  state_name county_name zip_codes
index                                                              
12846             Alpine       CA  California   San Diego     91901
12846             Alpine       CA  California   San Diego     91903
12860      Granite Hills       CA  California   San Diego     92021
12860      Granite Hills       CA  California   San Diego     92019
12975  Casa de Oro-Mount       CA  California   San Diego     91977
12975  Casa de Oro-Mount       CA  California   San Diego     91941
12975  Casa de Oro-Mount       CA  California   San Diego     92020
12975  Casa de Oro-Mount       CA  California   San Diego     91976
...