虽然有一些类似的问题,但我找不到一个直截了当的答案。注意,我来自R,对熊猫还很陌生。
假设我有一个Pandas数据框df,它包含两列:“measure”(3级unicode)和“Airquality”(numpy.float64)。
我想创建一个名为“color”的第三列,它基于“Airquality”中的值。此外,我想为每个级别的“度量”分别执行此操作。我成功地使用df.loc在“measure”上拆分了df。然后,我使用以下代码分别计算每个df中的“颜色”:
#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天才之一学习。
我认为您可以使用^{} 工具,特别是
transform
。从一个框架开始(顺便说一句,通常会自己展示一个示例数据框架):这是因为我们通过对measure列进行分组,为每个不同的measure值找到aq列的最大值,并将其广播到整个帧来获得正确的分母,这就是为什么:
我不是天才,但我喜欢熊猫。用法,即:
文档中的更多信息与往常一样:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html
相关问题 更多 >
编程相关推荐