我有一个包含三列的数据集:
import pandas as pd
df = pd.DataFrame({'A': [1,2,3,2,3,3],
'B': [1.0, 2.0, 3.0, 2.0, 3.0, 3.0],
'C': [0.0, 3.5, 1.2, 2.1, 3.1, 0.0]})
现在,显然我可以使用 df['A'].value_counts()让我得到 A 列中值的计数:
df['A'].value_counts()
3 3
2 2
1 1
Name: A, dtype: int64
但是,我需要的是能够根据 B 之间的关系更改计数值。和 C .
例如:
df['B'][0] - df['C'][0]
1.0
df['B'][1] - df['C'][1]
-1.5
我的情况是,我想要总和 > 0算作 1,求和 < 0计为-1,和0算作 0。
所以为了我的目的,有 B和 C变成这样:
df = pd.DataFrame({'A': [1, 2, 3, 2, 3, 3],
'counts': [1, -1, 1, -1, -1, 1]})
然后以某种方式能够将其转化为:
3 2
1 1
2 -2
是我所追求的。我将如何使用 Pandas 来做到这一点?
请您参考如下方法:
import pandas as pd
import numpy as np
df['counts'] = np.sign(df.B - df.C) # use the numpy.sign to create the count column
df.groupby('A')['counts'].sum() # group the counts by column A and sum the value
#A
#1 1.0
#2 -2.0
#3 1.0
#Name: counts, dtype: float64
