Как превратить все строки до максимального значения в ноль во фрейме данных? питон - PullRequest
0 голосов
/ 18 июня 2019

как я могу превратить все значения в каждом столбце кадра данных, которые встречаются до максимального значения, в ноль, например столбец 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.

Я пытался использовать dataframe.where, пытался использовать loc и iloc, но это было бесполезно, так как я не смог сравнить индекс максимального значения с индексом каждой строки (во всех столбцах), чтобы можно было найти, какие строки имели индекс, меньший, чем индекс максимального значения в каждом столбце.

Ответы [ 2 ]

1 голос
/ 18 июня 2019

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
0 голосов
/ 18 июня 2019
A = [1,2,3,4,5,1,2,3]

print(max(A))

newA = []
maxValueFound = False
for i in A:
    if(i>=max(A) or maxValueFound==True):
        newA.append(i)
        maxValueFound = True
    else:
        newA.append(0)

print(newA)

Выход: [0, 0, 0, 0, 5, 1, 2, 3]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...