我一直在尝试使用iterrows
if / else语句来返回DataFrame列中的计算值。我开始认为这是错误的方法。
在此示例中,我有两个变量x
和y
,以及一个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
。但是如果类别是三个或四个,则将整个相应的数字分配给变量y
。 x
和y
将是总结结果,如:
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
甚至可以进行这些类型的计算,还是有更好的方法?
答案 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()