Python 3.x I';我试图找到每行中包含数据的最后一列,并将列名返回到数据框
我正在尝试获取来自ffill的值的列名 我已经搜索过google和stack overflow,但还没有找到实现这一点的方法 这是ffill代码: df[“最后一次冲压”]=df.ffill(轴=1.iloc[:,-1] 这是我的数据帧: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
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将用于查找第一个最大值的索引