Python 如何获取熊猫中最后一个非零值的列名?

Python 如何获取熊猫中最后一个非零值的列名?,python,pandas,numpy,Python,Pandas,Numpy,我有一些连续特征的数据,这些特征必须在其他特征出现之前出现。 我想得到用户访问的最后一页 安装程序 将numpy导入为np 作为pd进口熊猫 df=pd.DataFrame({'user':[10,15,17], 性别:['M','M','F'], “主页”:[1,1,1], “搜索页面”:[1,0,1], “确认页面”:[1,0,0], “付款页面”:[1,0,0]}) 打印(df) 用户性别主页搜索页面确认页面付款页面 0 10米1 115m100 2 17 F 11 0 0 问题: 如何

我有一些连续特征的数据,这些特征必须在其他特征出现之前出现。 我想得到用户访问的最后一页

安装程序
将numpy导入为np
作为pd进口熊猫
df=pd.DataFrame({'user':[10,15,17],
性别:['M','M','F'],
“主页”:[1,1,1],
“搜索页面”:[1,0,1],
“确认页面”:[1,0,0],
“付款页面”:[1,0,0]})
打印(df)
用户性别主页搜索页面确认页面付款页面
0 10米1
115m100
2 17 F 11 0 0
问题: 如何获取名为“final_page”且名称为final page的新列

必答

df['final_page'] = ['payment_page','home_page','search_page'] # this is not answer,
# The new column should have these values.

我的尝试 不动产链接

您可以使用列的乘积,条件是
df=0,然后拆分并获取最后一列:

m=df.set_index(['user','sex'],append=True)
df['final_page']=(m.ne(0).dot(m.columns+ ',').str.rstrip(',').str.split(',')
                                     .str[-1].droplevel(['user','sex']))
print(df)
或:


您可以使用列的乘积,条件是
df=0,然后拆分并获取最后一列:

m=df.set_index(['user','sex'],append=True)
df['final_page']=(m.ne(0).dot(m.columns+ ',').str.rstrip(',').str.split(',')
                                     .str[-1].droplevel(['user','sex']))
print(df)
或:


使用numpy:

将numpy导入为np
作为pd进口熊猫
df=pd.DataFrame({'user':[10,15,17],
性别:['M','M','F'],
“主页”:[1,1,1],
“搜索页面”:[1,0,1],
“确认页面”:[1,0,0],
“付款页面”:[1,0,0]})
pages=df.columns[2:]
df['final_page']=df.iloc[:,2::].apply(lambda x:pages[np.max(np.nonzero(x))],轴=1)
打印(df)
结果:

   user sex  home_page  search_page  confirmation_page  payment_page  \
0    10   M          1            1                  1             1   
1    15   M          1            0                  0             0   
2    17   F          1            1                  0             0   

     final_page  
0  payment_page  
1     home_page  
2   search_page 
使用numpy:

将numpy导入为np
作为pd进口熊猫
df=pd.DataFrame({'user':[10,15,17],
性别:['M','M','F'],
“主页”:[1,1,1],
“搜索页面”:[1,0,1],
“确认页面”:[1,0,0],
“付款页面”:[1,0,0]})
pages=df.columns[2:]
df['final_page']=df.iloc[:,2::].apply(lambda x:pages[np.max(np.nonzero(x))],轴=1)
打印(df)
结果:

   user sex  home_page  search_page  confirmation_page  payment_page  \
0    10   M          1            1                  1             1   
1    15   M          1            0                  0             0   
2    17   F          1            1                  0             0   

     final_page  
0  payment_page  
1     home_page  
2   search_page 

非常感谢。祝你新年快乐。@MilkyWay001提前祝你新年快乐:)祝你好运。新年快乐。@MilkyWay001提前新年快乐:)编码快乐
   user sex  home_page  search_page  confirmation_page  payment_page  \
0    10   M          1            1                  1             1   
1    15   M          1            0                  0             0   
2    17   F          1            1                  0             0   

     final_page  
0  payment_page  
1     home_page  
2   search_page