如何将数据框各列中出现在最大值之前的所有值都变为零,例如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,但没有用,因为我无法将最大值的索引与每一行(所有列)的索引进行比较,以便可以找到哪些行的索引比每列的最大值的索引小。
答案 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]