拆分列并使用pandas附加到其他列中的现有值

时间:2017-12-14 17:13:29

标签: python pandas dataframe

我正面临着使用熊猫进行数据清理的一些艰难挑战。我需要处理数据框中的ZIP,State和City列(如附件)。

这是数据的一瞥:

    City         State        ZIP   
0   PEARLAND       TX        77584
1   HOT SPRINGS    AR        7191
2   PALMDALE       CA        93551
3   JONESBOROY     AR        72401
4   WATSONVILLE    CA        95076
5   SACRAMENTO     UCA       95823      
6   AGOURAT       HILLS      CA 91301
7   JSAN          DIEGO      CA 92114
8   NEW           PORT       RICHEY FL 34655
9   BURBANK        CA        91501

我面临的挑战: Zip列应仅包含Zip编号,state列应仅包含2位数的州代码,city应具有有效的城市名称。

例如:

    City          State        ZIP
6   AGOURAT       HILLS      CA 91301
7   JSAN          DIEGO      CA 92114
8   NEW           PORT       RICHEY FL 34655

应该是 -

    City               State        ZIP
6   AGOURAT HILLS      CA         91301
7   JSAN DIEGO         CA         92114
8   NEW PORT RICHEY    FL         34655

所以任何人都可以帮助我如何使用Pandas数据框实现这一目标?

1 个答案:

答案 0 :(得分:1)

最好的选择是使用正则表达式再次读取数据。如果没有,重做。

df['combined'] = df.apply(' '.join, axis = 1)
df[['City', 'State', 'Zip']] = df['combined'].str.extract('([A-Z ]+)\s+([A-Z]{2})\s+(\d+)', expand = True)
df.drop('combined', axis = 1, inplace = True)



    City            State   ZIP
0   PEARLAND        TX  77584
1   HOT SPRINGS     AR  7191
2   PALMDALE        CA  93551
3   JONESBOROY      AR  72401
4   WATSONVILLE     CA  95076
5   NaN             NaN NaN
6   AGOURAT HILLS   CA  91301
7   JSAN DIEGO      CA  92114
8   NEW PORT RICHEY FL  34655
9   BURBANK         CA  91501
相关问题