如何在数据帧中将最大值之前的所有行都置零?蟒蛇

时间:2019-06-18 07:03:32

标签: python pandas dataframe rows

如何将数据框各列中出现在最大值之前的所有值都变为零,例如A列= 1,2,3,4,5,1,2,3和B列= 2,3 ,4,5,6,7,3,4。执行单个操作或函数后,如何获取列中的值:列A = 0,0,0,0,5,1,2,3和列B = 0,0,0,0,0 ,7,3,4。

ive尝试使用dataframe.where,尝试使用loc和iloc,但没有用,因为我无法将最大值的索引与每一行(所有列)的索引进行比较,以便可以找到哪些行的索引比每列的最大值的索引小。

2 个答案:

答案 0 :(得分:1)

IIUC,您需要idxmax

print(df.idxmax())
A    4
B    5
dtype: int64

或使用mul

df = df.mul(df.eq(df.max()).cumsum())
# or if more than one place there is a max value
# df = df.mul(df.eq(df.max()).cumsum().gt(0))

print(df)
   A  B
0  0  0
1  0  0
2  0  0
3  0  0
4  5  0
5  1  7
6  2  3
7  3  4

答案 1 :(得分:0)

python "%f"
  

输出:   [0,0,0,0,5,1,2,3]