Python 3.x I';我试图找到每行中包含数据的最后一列,并将列名返回到数据框

Python 3.x I';我试图找到每行中包含数据的最后一列,并将列名返回到数据框,python-3.x,pandas,Python 3.x,Pandas,我正在尝试获取来自ffill的值的列名 我已经搜索过google和stack overflow,但还没有找到实现这一点的方法 这是ffill代码: df[“最后一次冲压”]=df.ffill(轴=1.iloc[:,-1] 这是我的数据帧: SHIFT IN OUT IN_1 DA6-0730 07:30 12:35 13:05 DB0-ACOM 08:18 12:30 DC4-0730 07:30 12:39 1

我正在尝试获取来自ffill的值的列名

我已经搜索过google和stack overflow,但还没有找到实现这一点的方法

这是ffill代码: df[“最后一次冲压”]=df.ffill(轴=1.iloc[:,-1]

这是我的数据帧:

SHIFT     IN     OUT    IN_1    
DA6-0730  07:30  12:35  13:05      
DB0-ACOM  08:18  12:30             
DC4-0730  07:30  12:39  13:09     
DC4-0730  07:30  12:34  13:04     
这是我使用ffill后的数据帧:

SHIFT     IN     OUT    IN_1   LAST_PUNCH
DA6-0730  07:30  12:35  13:05  13:05
DB0-ACOM  08:18  12:30         12:30
DC4-0730  07:30  12:39  13:09  13:09
DC4-0730  07:30  12:34  13:04  13:04
我想得到ffill值来自的列名,然后 附加到ffill值的末尾:

SHIFT     IN     OUT    IN_1   LAST_PUNCH
DA6-0730  07:30  12:35  13:05  13:05_IN_1
DB0-ACOM  08:18  12:30         12:30_OUT
DC4-0730  07:30  12:39  13:09  13:09_IN_1
DC4-0730  07:30  12:34  13:04  13:04_IN_1

嗯,这有点棘手

(df+'_'+pd.DataFrame(dict(zip(df.columns.values,df.columns.values)),index=df.index)).\
    reindex(columns=df.columns).ffill(axis=1).iloc[:,-1]
Out[360]: 
0    13:05_IN_1
1     12:30_OUT
2    13:09_IN_1
3    13:04_IN_1
Name: IN_1, dtype: object
或者使用列顺序相反的
idxmax

df.ffill(axis=1).iloc[:, -1]+'_'+df[df.columns[::-1]].notnull().idxmax(1)
Out[375]: 
0    13:05_IN_1
1     12:30_OUT
2    13:09_IN_1
3    13:04_IN_1
dtype: object

我很好奇idxmax方法在00:00之后是否能正常工作,因为数据是时间而不是日期时间,还是我不理解?@user3249641 idxmax将用于查找第一个最大值的索引