我正面临着使用熊猫进行数据清理的一些艰难挑战。我需要处理数据框中的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数据框实现这一目标?
答案 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