我有针对Name
和Date
的DataFrame,其中包含单元格中的权重值:
Name Jan17 Jun18 Dec18 Apr19 count
Nick 0 1.7 3.7 0 2
Jack 0 0 2.8 3.5 2
Fox 0 1.7 0 0 1
Rex 1.0 0 3.0 4.2 3
Snack 0 0 2.8 4.4 2
Yosee 0 0 0 4.3 1
Petty 0.5 1.3 2.8 3.5 4
Start
和{
Start
行中第一个非零值从Jan17
开始
列到Apr19
Finish
中的第一个非零值
顺序Apr19
直到Jan17
另外,如果row只有一个非零值,那么Start
和{
为了找到行中的第一个非零元素,我尝试了data[col].keys, np.argmax()
,它按预期工作。在
date_col_list = ['Jan17','Jun18','Dec18', 'Apr19']
data['Start']=data[date_col_list].keys([np.argmax(data[date_col_list].values!=0, axis=1)]
结果是:
^{pr2}$要检测Finish
列的值,我尝试使用:
np.apply_along_axis
作为:
def func_X(i):
return np.argmax(np.where(i!=0))
np.apply_along_axis(func1d = func_X, axis=1, arr=data[date_col_list].values)
结果是错误:
'tuple' object has no attribute 'argmax'
预期的数据帧为:
Name Jan17 Jun18 Dec18 Apr19 count Start Finish
Nick 0 1.7 3.7 0 2 Jun18 Dec18
Jack 0 0 2.8 3.5 2 Dec18 Apr19
Fox 0 1.7 0 0 1 Jun18 Jun18
Rex 1.0 0 3.0 4.2 3 Jan18 Apr19
Snack 0 0 2.8 4.4 2 Dec18 Apr19
Yosee 0 0 0 4.3 1 Apr19 Apr19
Petty 0.5 1.3 2.8 3.5 4 Jan17 Apr19
如何在从最后一列(Apr19
)到第一列(Jan17
)方向上引用非零值的Finish
?在
在您的情况下,请尝试使用
dot
执行其他操作first_valid_index
和last_valid_index
^{pr2}$stack
然后groupby
在底层
^{pr2}$array
上使用cumsum
相关问题 更多 >
编程相关推荐