我试图计算出表中每列增加值的平均值。你知道吗
我的桌子
A | B | C
----------------
0 | 5 | 10
100 | 2 | 20
50 | 2 | 30
100 | 0 | 40
我正在为我的问题写函数
def avergeIncreace(data,value): #not complete but what I have so far
x = data[value].pct_change().fillna(0).gt(0)
print( x )
pct_change()
返回该索引处的数字与前一行数字的百分比表。fillna(0)
将pct_change()
创建的图表的位置0处的NaN
替换为0。gt(0)
根据该索引处的值是否大于0,返回true或false表格
此功能的电流输出
In[1]:avergeIncreace(df,'A')
Out[1]: 0 False
1 True
2 False
3 True
Name: BAL, dtyle: bool
期望输出
In[1]:avergeIncreace(df,'A')
Out[1]:75
In[2]:avergeIncreace(df,'B')
Out[2]:0
In[3]:avergeIncreace(df,'C')
Out[3]:10
从我对pandas的有限理解来看,应该有一种方法返回一个包含所有为真的索引的数组,然后使用for循环并遍历原始数据表,但我相信pandas应该有一种不使用for循环的方法。你知道吗
我认为for循环的方式看起来是加上缺少的代码,所以返回的索引是真的,而不是每个索引
avergeIncreace(df,'A')
indexes = data[value].pct_change().fillna(0).gt(0).index.values #this returns an array containing all of the index (true and false)
answer = 0
times = 0
for x in indexes:
answer += (data[value][x] - data[value][x-1])
times += 1
print( answer/times )
如何在不使用for循环的情况下实现所需的输出?你知道吗
您可以使用
mask()
和diff()
:收益率:
怎么样
相关问题 更多 >
编程相关推荐