首页 > 解决方案 > 是否有一个 Python 函数可以从字符串中删除字符(带数字)?

问题描述

我正在做一个关于高档化的项目。我的队友从人口普查中提取数据并对其进行清理以获得我们需要的值。问题是,邮政编码值不会打印 0(即“2322”,而应该是“02322”)。我们设法找到了打印带有机智代码(“ZCTA5 02322”)的完整邮政编码的机智值。我想删除“ZCTA5”以单独获取邮政编码。

我试过下面的代码,但它只去掉了“ZCTA”而不是“ZCTA5”(即“502322”)。我还担心,如果我设法删除带有字符的 5,它也会删除邮政编码中的所有 5。

从那里我将从 pgeocode 中提取以访问相应的 lat & lng 值以创建热图。请帮忙?

我已经尝试过 .replace()、.translate() 函数。替换仍将邮政编码打印为 5。翻译得到一个属性错误。

样本数据

Zipcode | Name        | Change_In_Value | Change_In_Income | Change_In_Degree | Change_In_Rent
2322    | ZCTA5 02322 | -0.050242       | -0.010953        |  0.528509        | -0.013263
2324    | ZCTA5 02324 |  0.012279       | -0.022949        | -0.040456        |  0.210664
2330    | ZCTA5 02330 |  0.020438       |  0.087415        | -0.095076        | -0.147382
2332    | ZCTA5 02332 |  0.035024       |  0.054745        |  0.044315        |  1.273772
2333    | ZCTA5 02333 | -0.012588       |  0.079819        |  0.182517        |  0.156093

翻译

zipcode = []

test2 = gent_df['Name'] = gent_df['Name'].astype(str).translate({ord('ZCTA5'): None}).astype(int)

zipcode.append(test2)

test2.head()


代替

zipcode = []

test2 = gent_df['Name'] = gent_df['Name'].astype(str).replace(r'\D', '').astype(int)

zipcode.append(test2)

test2.head()

代替

预期的:

24093
26039
34785
38944
29826

实际的:

524093
526039
534785
538944
529826

翻译

预期的:

24093
26039
34785
38944
29826

实际的:

AttributeError                            Traceback (most recent call last)
<ipython-input-71-0e5ff4660e45> in <module>
      3 zipcode = []
      4 
----> 5 test2 = gent_df['Name'] = gent_df['Name'].astype(str).translate({ord('ZCTA5'): None}).astype(int)
      6 # zipcode.append(test2)
      7 test2.head()

~\Anaconda3\envs\MyPyEnv\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
   5178             if self._info_axis._can_hold_identifiers_and_holds_name(name):
   5179                 return self[name]
-> 5180             return object.__getattribute__(self, name)
   5181 
   5182     def __setattr__(self, name, value):

AttributeError: 'Series' object has no attribute 'translate'

标签: python-3.xpandasheatmap

解决方案


看起来您正在使用 pandas,因此您应该能够使用 .lstrip() 方法。我在一个示例 df 上尝试了这个,它对我有用:

gent_df.Name = gent_df.Name.str.lstrip(to_strip='ZCTA5')

这是指向 、 和 的库页面.strip().lstrip()链接.rstrip()

我希望这有帮助!


推荐阅读