虽然有一些类似的问题,但我找不到一个直接回答以下问题的答案。请注意,我是从R过来的,并且对Pandas非常新手。
假设我有一个包含两列的Pandas数据框df,它们是“measure”(3个unicode级别)和“Airquality”(numpy.float64)。
我想创建第三列名为“color”,它基于“Airquality”的值。此外,我想针对“measure”的每个级别单独执行此操作。我通过使用df.loc在“measure”上分割df成功了。然后,我使用以下代码在每个df中单独计算了“color”:
然而,我使用的大型数据集运行速度相当缓慢,我确信一定有更好的方法...可能使用一些Pandas函数,而且很可能不需要将df拆分为三个等级的“测量”之一。我发表这篇文章希望从众多Python天才中学习。
假设我有一个包含两列的Pandas数据框df,它们是“measure”(3个unicode级别)和“Airquality”(numpy.float64)。
我想创建第三列名为“color”,它基于“Airquality”的值。此外,我想针对“measure”的每个级别单独执行此操作。我通过使用df.loc在“measure”上分割df成功了。然后,我使用以下代码在每个df中单独计算了“color”:
#calculate the maximum value of "Airquality" in df for each "measure" level:
maxi = df['Airquality'].max()
#initialize the column for "color" in df for each "measure" level:
df['color'] = None
#find the maximum value of "Airquality" in df for each "measure" level:
maxi = df['Airquality'].max()
#loop through the rows calculating and assigning the value for color,
#again, in df for each "measure" level
for i in range(len(df['Airquality'])):
df['color'][i] = int(100*df['Airquality'][i]/maxi)]
然而,我使用的大型数据集运行速度相当缓慢,我确信一定有更好的方法...可能使用一些Pandas函数,而且很可能不需要将df拆分为三个等级的“测量”之一。我发表这篇文章希望从众多Python天才中学习。