DataFrame全局strip()函数失效及'Iran '右侧空格无法去除的问题排查求助
DataFrame全局strip()函数失效及'Iran '右侧空格无法去除的问题排查求助
各位大佬好,我最近在处理一份能源指标的DataFrame时碰到了一个奇怪的问题:我尝试用str.strip()去除Country列所有条目的首尾空格,还单独写了代码替换'Iran '为'Iran',但始终有一个'Iran '(右侧带空格)的条目残留,怎么都去不掉,想请大家帮忙排查下问题出在哪,以及怎么解决。
数据片段(部分)
<Country Energy Supply Energy Supply per Capita % Renewable 0 Afghanistan 3.210000e+08 10.0 78.669280 1 Albania 1.020000e+08 35.0 100.000000 2 Algeria 1.959000e+09 51.0 0.551010 ... (中间省略部分行)
我执行的处理代码
import pandas as pd import numpy as np Energy = pd.read_excel("assets/Energy Indicators.xls", header = 17, skipfooter = 38) # 删除无用列 Energy.pop('Unnamed: 0') Energy.pop('Unnamed: 1') # 重命名列 Energy.columns.values[0:4] =['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable'] # 替换缺失值标记 Energy = Energy.replace('...', np.nan) # 尝试单独替换Iran的空格 Energy = Energy.replace('Iran ', 'Iran') # 全局去除Country列首尾空格 Energy['Country'] = Energy['Country'].str.strip() # 转换Energy Supply单位 Energy['Energy Supply'] = Energy['Energy Supply'].multiply(1000000) # 去除Country列中的括号内容和数字 Energy['Country'] = Energy['Country'].str.replace("\(.*\)","") Energy['Country'] = Energy['Country'].str.replace('\d+', "") # 替换部分国家名称 Energy['Country'] = Energy['Country'].replace( ["Republic of Korea", "United States of America", "United Kingdom of Great Britain and Northern Ireland", "China, Hong Kong Special Administrative Region"], ["South Korea", "United States", "United Kingdom", "Hong Kong"] )
问题现象
执行完上述代码后,我用(Energy == 'Iran ').sum()检查,结果显示:
Country 1 Energy Supply 0 Energy Supply per Capita 0 % Renewable 0 dtype: int64
也就是说,Country列里还是有一个条目是带右侧空格的'Iran ',我尝试过的两种方法都没起作用。
求助需求
- 想知道为什么全局
strip()和单独替换都没生效? - 有没有办法要么对整个DataFrame的所有单元格执行去除首尾空格的操作,要么彻底解决'Iran '的空格问题?
备注:内容来源于stack exchange,提问作者Vicente Parra
相关产品推荐
相关产品推荐

