2024-05-19 10:53:39 发布
网友
假设我有一个这样的专栏:
a b 1 5 1 7 2 3 1 3 2 5
我想总结一下b的值,例如a = 1。这会给我5 + 7 + 3 = 15。
b
a = 1
5 + 7 + 3 = 15
在熊猫身上怎么做?
也可以在不使用groupby或loc的情况下执行此操作。只需在代码中包含条件。让dataframe的名称为df。然后您可以尝试:
df[df['a']==1]['b'].sum()
或者您也可以尝试:
sum(df[df['a']==1]['b'])
另一种方法是使用python的numpy库:
import numpy as np print(np.where(df['a']==1, df['b'],0).sum())
这里的基本思想是选择要求和的数据,然后求和。数据的选择可以用几种不同的方法来完成,其中一些方法如下所示。
可以说,选择值的最常用方法是使用Boolean indexing。
使用此方法,可以找出列“a”等于1的位置,然后对列“b”的相应行求和。可以使用loc处理行和列的索引:
1
loc
>>> df.loc[df['a'] == 1, 'b'].sum() 15
布尔索引可以扩展到其他列。例如,如果df还包含一个列“c”,并且我们希望对“b”中的行求和,其中“a”是1,“c”是2,我们将编写:
df
df.loc[(df['a'] == 1) & (df['c'] == 2), 'b'].sum()
选择数据的另一种方法是使用^{}筛选感兴趣的行,选择列“b”,然后求和:
>>> df.query("a == 1")['b'].sum() 15
同样,该方法可以扩展以对数据进行更复杂的选择:
df.query("a == 1 and c == 2")['b'].sum()
注意,这比布尔索引方法更简洁一些。
另一种方法是使用^{}根据列“a”中的值将数据帧分割为多个部分。然后,您可以对每个部分求和,并得出1加起来的值:
>>> df.groupby('a')['b'].sum()[1] 15
这种方法可能比使用布尔索引要慢,但如果要检查列a中其他值的和,则非常有用:
a
>>> df.groupby('a')['b'].sum() a 1 15 2 8
也可以在不使用groupby或loc的情况下执行此操作。只需在代码中包含条件。让dataframe的名称为df。然后您可以尝试:
或者您也可以尝试:
另一种方法是使用python的numpy库:
这里的基本思想是选择要求和的数据,然后求和。数据的选择可以用几种不同的方法来完成,其中一些方法如下所示。
布尔索引
可以说,选择值的最常用方法是使用Boolean indexing。
使用此方法,可以找出列“a”等于
1
的位置,然后对列“b”的相应行求和。可以使用loc
处理行和列的索引:布尔索引可以扩展到其他列。例如,如果
df
还包含一个列“c”,并且我们希望对“b”中的行求和,其中“a”是1,“c”是2,我们将编写:查询
选择数据的另一种方法是使用^{} 筛选感兴趣的行,选择列“b”,然后求和:
同样,该方法可以扩展以对数据进行更复杂的选择:
注意,这比布尔索引方法更简洁一些。
分组
另一种方法是使用^{} 根据列“a”中的值将数据帧分割为多个部分。然后,您可以对每个部分求和,并得出1加起来的值:
这种方法可能比使用布尔索引要慢,但如果要检查列
a
中其他值的和,则非常有用:相关问题 更多 >
编程相关推荐