在Python中,(pandas)我想知道如何:
假设我有以下数据框:
month_1 month_2 month_3 value threshold_reached
0 1000 2000 3000 2500 month_3
1 300 500 700 400 month_2
2 0 10 50 15 month_3
每行,我想将列month_1
,month_2
和month_3
与值列进行比较,并返回值列中数字较低的月份的列标题比那个月,但高于上个月(希望这是有道理的)。
例如,在第一行中,值为2500,位于第2个月和第3个月之间,因此应在threshold_reached
列中返回第3行。
提前致谢!
答案 0 :(得分:0)
print df
month_1 month_2 month_3 value
0 1000 2000 3000 2500
1 300 500 700 400
2 0 10 50 15
df = df.assign(threshold_reached=df.apply( lambda row: row[row.gt(row['value'])].index[0] ,axis=1))
month_1 month_2 month_3 value threshold_reached
0 1000 2000 3000 2500 month_3
1 300 500 700 400 month_2
2 0 10 50 15 month_3
创建函数以查找大于值的第一个数字
将功能应用于每一行
只有当至少有一个数字大于"值"时,代码才有效。如果没有大于"值"
的数字,它将失败