我最近正在与Pandas一起工作,并且在数据清理过程中遇到问题在这里,我需要替换具有点模式(即“ ...”或“ ............”)的列值熊猫到NaN
My actual dataframe i.e. energy
我现在要做的就是简单地使用replace方法将该点状图案替换为NaN
这是我的代码:
energy.replace('...*','NaN', regex=True, inplace=True)
我的输出:
My output after the above code
我已成功将具有点图案的数据清除为NaN ,但我的国家/地区列的所有值也均更改为NaN ,如第二幅图像所示。我尝试搜索此问题,以了解如何仅更改选定的列值,但得到了各种方法,但均不适用于我的方案。
有人可以帮我吗?
答案 0 :(得分:1)
您的国家/地区列已更改,因为您使用的是正则表达式,并且在正则表达式.
中,是任何符号。您可能想使用像'\.+'
这样的正则表达式,它将匹配任意数量的.
字符。这是一种解决方案,不需要您将执行限制为特定的列。
在我的数据模拟模型上使用\.+
中的energy.replace(r'\.+', 'NaN', regex=True, inplace=True)
时,输出为:
>>> energy
Country Energy Supply Energy Supply Per Capita % Renewable
0 some_string 16846846 484 85.48648
1 some_string 16846846 484 85.48648
2 some_string 16846846 484 85.48648
3 some_string NaN NaN 85.48648
4 some_string 16846846 484 85.48648
出于完整性考虑,您还可以通过仅在该列上调用replace函数来将执行限制在特定的列上:
energy['Energy Supply'].replace(r'\.+', 'NaN', regex=True, inplace=True)
这给出了输出:
>>> energy
Country Energy Supply Energy Supply Per Capita % Renewable
0 some_string 16846846 484 85.4865
1 some_string 16846846 484 85.4865
2 some_string 16846846 484 85.4865
3 some_string NaN ... 85.4865
4 some_string 16846846 484 85.4865