当前位置:  开发笔记 > 编程语言 > 正文

计算Pandas数据帧中的新列

如何解决《计算Pandas数据帧中的新列》经验,为你挑选了1个好方法。

虽然有一些类似的问题,但我找不到以下简单的答案.请注意,我来自R,对Pandas来说很新.

假设我有一个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天才中的一位学习.



1> wanaryytel..:

我不是天才,但我会和熊猫一起去apply.用法即如此:

df['newcol'] = df.apply(lambda row: row['firstcolval'] * row['secondcolval'], axis=1)

像往常一样在文档中提供更多信息:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html


@ davo1979我不明白你的意思是拆分"测量"...你能提供问题中的例子数据和期望的输出是什么吗?
推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有