我有一个包含三列的数据集:
2,5,9
12,2,10
5,2,4
9,2,1
现在,显然我可以使用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
求和为1,将> 0
求和为-1,将< 0
求和为0,< / p>
因此,出于我的目的,让0
和B
变成这样的:
C
然后能以某种方式将其翻译成:
df = pd.DataFrame({'A': [1, 2, 3, 2, 3, 3],
'counts': [1, -1, 1, -1, -1, 1]})
我正在追求什么。我怎么用熊猫做这个?
答案 0 :(得分:4)
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
答案 1 :(得分:2)
df['counts'] = 0
df.loc[df['B'] - df['C'] > 0, 'counts'] = 1
df.loc[df['B'] - df['C'] < 0, 'counts'] = -1