【问题标题】:Is there any function which i can split values in a table into smaller subgroups?是否有任何功能可以将表中的值拆分为较小的子组?
【发布时间】:2019-10-30 13:53:16
【问题描述】:
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

【问题讨论】:

  • 查看series.str.split() 和df.explode() 最后一列
  • 这个函数不起作用,它显示一个错误`AttributeError: 'DataFrame' object has no attribute 'explode' @anky_91
  • 将你的 pandas 版本升级到 0.25
  • 谢谢它的工作@anky_91

标签: python-3.x pandas split organization


【解决方案1】:

pandas 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 2016-10-27
    • 1970-01-01
    • 2012-08-18
    • 2020-05-05
    • 2020-04-17
    • 1970-01-01
    相关资源
    最近更新 更多