熊猫:使用iterrows返回计算值

时间:2016-02-25 23:12:16

标签: python pandas

我一直在尝试使用iterrows if / else语句来返回DataFrame列中的计算值。我开始认为这是错误的方法。

在此示例中,我有两个变量xy,以及一个DataFrame:

    category    number
0   one         13
1   two         14
2   one         7
3   three       8
4   one         3
5   two         8
6   four        9

如果类别为1或2,则将相应的数字除以2,并将值的一半分配给变量x,将一半分配给变量y。但是如果类别是三个或四个,则将整个相应的数字分配给变量yxy将是总结结果,如:

x = 22.5
(因为:13/2 + 14/2 + 7/2 + 3/2 + 8/2 = 22.5)

y = 39.5
(因为:13/2 + 14/2 + 7/2 + 8 + 3/2 + 8/2 + 9 = 39.5)

我还没有找到像这样使用iterrows的任何例子。使用iterrows甚至可以进行这些类型的计算,还是有更好的方法?

1 个答案:

答案 0 :(得分:1)

您可以使用.loc按照您正在查看的每个案例进行切片,然后根据情况进行汇总。

case1 = ['one', 'two']
case2 = ['three', 'four']
x = df.loc[df.category.isin(case1), 'number'].sum()/2
y = x + df.loc[df.category.isin(case2), 'number'].sum()
相关问题