Как я могу перебрать DataFrame и построить новый (с условиями)? - PullRequest
0 голосов
/ 26 сентября 2019

Итак, я создал DataFrame для моего вопроса:


import pandas as pd
import random
median = random.uniform(0, 1)
data = [[random.uniform(0, 1), random.uniform(0, 1)], [random.uniform(0, 1), random.uniform(0, 1)], [random.uniform(0, 1), random.uniform(0, 1)]]
df= pd.DataFrame(data, columns=["A","B"])

DataFrame выглядит следующим образом:

          A         B         
0  0.243965  0.363859
1  0.376634  0.968781 
2  0.113388  0.555450

Что я пытаюсь сделать, это посмотреть, если значение встолбец Строка 0 больше медианы, определенной ранее.Если это так, я хочу применить определенную формулу в столбце B строки 0 и сохранить результат в новом DataFrame.Если это не так, я хочу применить к значению в строке 0 столбца B другую формулу, а также сохранить ее в новом DataFrame.Я хочу повторить это для каждой строки.

Скажем, медиана равна 0,3 Две простые формулы, упрощающие это:

x -0,1 и X + 0,1

Я попытался решить это так:

for column in df[["A"]]:
    if A > median:
        new_Dataframe = B - 0.1
    else:
        new_Dataframe = B + 0.1

Результат должен выглядеть следующим образом, и это должен быть новый DataFrame:

   new_DataFrame         
0  0.463859
1  0.868781 
2  0.655450

У меня проблемы с доступом к желаемым ячейкам, и у меня естьПонятия не имею, как решить эту проблему.Любая помощь приветствуется.Кроме того, в реальной DataFram гораздо больше строк, поэтому я не могу просто рассчитать ее для каждой строки, как в моем примере.

1 Ответ

0 голосов
/ 26 сентября 2019

Использование np.where :

new_dataframe=pd.DataFrame(np.where(df['A']>median,df['B']-0.1,df['B']+0.1),columns=['new_dataframe'])
print(new_dataframe)

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