计算熊猫列中的正值

时间:2018-08-23 22:49:33

标签: python python-3.x pandas

我有一个包含多列数字的表格。我正在尝试获取该表的统计信息,并且试图统计单个列中各行之间的正增长量。

我有什么

A  |  B  |  C
--------------
1  |  5  |  2
5  |  2  |  7
2  |  2  |  10
18 |  0  |  14

我要为我的问题写的功能

def countIncreace(data,value):  #not complete but what I have so far
  print( data[value].pct_change().fillna(0).count( > 0) )  

pct_change()返回该索引处的数字与其前一行中的数字相比的百分比的表,并且fillna(0)替换了{{ 1}}使用0

创建

我想要的输出:

NaN

在获取正值计数时我缺少什么功能

4 个答案:

答案 0 :(得分:2)

您可以使用pd.Series个方法gt(大于)和sum

df[column].pct_change().fillna(0).gt(0).sum()

通常,与将内置函数与Pandas系列/ NumPy数组一起使用相比,这是一个更好的主意。

答案 1 :(得分:1)

非常接近!一切正确,除了您尝试计算大于0的变化百分比的方法。这是一种方法

def countIncrease(df,column):
    print sum(df[column].pct_change().fillna(0) > 0)

答案 2 :(得分:0)

您可以使用DataFrame.loc

len(df.loc[df.A > 0]

示例:

df = pd.DataFrame(np.random.randint(-10, 10, (3, 3)), columns=list('ABC'))
print(len(df.loc[df.A > 0]))

或者只是[ ]

print(len(df[df.A > 0]))

答案 3 :(得分:0)

我喜欢使用 query ,它更容易阅读。

len(df.query('A > 0'))