我在使用 pandas 进行数据清理方面面临着一些艰巨的挑战。我需要处理数据框中的邮政编码、州和城市列(如附件)。
这是数据的一瞥:
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
我面临的挑战: 邮政编码列应仅包含邮政编码,州列应仅包含 2 位数的州代码,城市应具有有效的城市名称。
例如:
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 数据框来实现这一目标?
最佳答案
最好的选择是使用正则表达式再次读取数据。如果没有,请重做。
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
关于python - 使用 pandas 拆分列并附加到其他列中的现有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47818802/