删除数据框列中的非字母str

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除数据框列中的非字母str相关的知识,希望对你有一定的参考价值。

假装我有此专栏

energy['Country'] = ['Brazil', 'France (2015)', np.nan, 'USA']

我有一个数据框,其中有一列我要删除带有数字或括号的国家/地区。我特别在for循环中无法删除该值,它抱怨说需要整数。

Energy_Supply = [type(x) == str for x in energy['Country']]  
es = energy['Country'].loc[Energy_Supply]
for k in es:
    if k.isalpha() == False:
        es.pop(k)
energy['Country'] = energy['Country'].where(energy['Country'].isin(es))

我希望您告诉我一种更好更清洁的方式来进行此操作,请解释一下

答案

尝试一下;

# create boolean indexer for alpha only strings 
# this returns a pandas.Series where true is alpha
string_selector = energy['Country'].map(lambda x: x.isalpha() 
                                                  if not isinstance(x, numpy.NaN) 
                                                  else False)

# drop the rows that aren't alpha, notice the ~
energy.drop(energy[~string_selector].index, inplace=True)

以上是关于删除数据框列中的非字母str的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Python 的数据框列中的字符串中删除非字母数字字符?

将数据框列中每个单词的首字母大写

我想从python中数据框列中的字符串链接中删除子字符串

使用 pandas str.find 方法对数据框列中的字符串进行切片

Pyspark 删除数据框列中的多个字符

从 pandas 数据框列中的对象中删除逗号