如何在过滤后的数据框中使用枚举

how to use enumerate in a filtered dataframe

社区!感谢迄今为止我得到的所有支持!

我以下面的数据框为例:

d = {'country': ['argentina', 'argentina', 'colombia', 'australia', 'england', 'england' , 'china', 'india', 'emirates', 'togo'], 'numbers': [39, 30, 20, 71, 44, 56, 21, 45, 29 ,33]}

df = pd.DataFrame(数据=d)

实际上,我正在使用的那个有 30,000 行,我过滤了几次(大约 10 次)

在所有过滤器之后我得到了类似的东西:

索引因筛选器不同而不同。

现在我到了一个地步,如果 'egd' 以 'e' 开头,我必须替换国家名称,所以我想出了:

for i, row in enumerate(df['country']):

    if row.startswith('e'):

        df['country'][i] = 'egd'

警告是:

实际上,下面的代码并没有起作用

我明白这是因为过滤后的数据帧与原始数据帧的索引相比,枚举 'i' 的值不同。

处理这种情况的最佳方法是什么?删除过滤的行? 有什么办法可以删除过滤的行吗? (在上例中:第 1、2、3、6、8 行)

提前致谢!!

更多pandas方法是使用地图

df['country'] = df['country'].map(lambda s: 'egd' if s.startswith('e') else s)