【发布时间】:2022-01-04 17:37:15
【问题描述】:
我有以下函数用于获取行的最后一个非零值的列名
import pandas as pd
def myfunc(X, Y):
df = X.iloc[Y]
counter = len(df)-1
while counter >= 0:
if df[counter] == 0:
counter -= 1
else:
break
return(X.columns[counter])
使用以下代码示例
data = {'id': ['1', '2', '3', '4', '5', '6'],
'name': ['AAA', 'BBB', 'CCC', 'DDD', 'EEE', 'GGG'],
'A1': [1, 1, 1, 0, 1, 1],
'B1': [0, 0, 1, 0, 0, 1],
'C1': [1, 0, 1, 1, 0, 0],
'A2': [1, 0, 1, 0, 1, 0]}
df = pd.DataFrame(data)
df
myfunc(df, 5) # 'B1'
我想知道如何将此函数应用于数据框中的所有行,并将结果放入 df 的新列中
我正在考虑遍历所有行(这可能不是好方法)或使用带有 apply 函数的 lambda。但是,我没有成功采用最后一种方法。有什么帮助吗?
【问题讨论】:
标签: python pandas dataframe lambda apply