Я недавно начал использовать питона и панд, пожалуйста, помните об этом.
У меня есть два столбца (A, B) данных (dataframe), которые должны быть расположены в определенной последовательности на основе определенного отношения между двумя столбцами (скажем, элементы столбца A должны быть меньше, чем элементы столбца B для данного индекса), если отношение не удовлетворены данные должны быть сдвинуты (только для A) на строку, начиная с индекса, где условие не выполняется по всей длине столбца. И его следует заменить на NaN, если условие не выполняется.
Я попробовал функцию shift (1). Это работает, только если первый элемент не соответствует условию, но если есть какой-либо другой элемент или несколько элементов не соответствуют критериям, он создает несколько NaN в начале столбца A, а не в том месте, где критерии не выполняются.
mdata1 = [[3,2],[5,4],[8,6],[10,7],[float('NaN'),9],[float('NaN'),11]]
mdf1 = pd.DataFrame(mdata1,columns=['A','B'])
for xt in range (0,len(mdf1)):
if mdf1.A[xt]>mdf1.B[xt]:
mdf1['A'] = mdf1['A'].shift(1)
Фактический результат
A B
NaN 2
NaN 4
3.0 6
5.0 7
8.0 9
10.0 11
Ожидаемый результат
A B
NaN 2
3.0 4
5.0 6
NaN 7
8.0 9
10.0 11