Сгенерируйте уникальные операторы, используя для l oop на pandas фрейм данных - PullRequest
1 голос
/ 01 августа 2020

У меня есть сгруппированный и агрегированный фрейм данных

df_subsegment:
    segment         Sales   Income  Rent
0   A               184.37  224.24  5242.9  
1   B               45.42   176.79  6693.0  
<+100 rows>

Я создал список из приведенного выше фрейма данных:

    SubSegment_list = df_subsegment['segment'].unique()
    SubSegment_list

[out] array(['A', 'B'], dtype=object)


for i in SubSegment_list:
    var1 = df['Sales']
    var2 = df['Income']
    var3 = df['Rent']
    flag1 = 'up' if var1>0 else 'down'
    flag2 = 'up' if var2>0 else 'down'
    flag3 = 'leverage' if var3>0 else 'deleverage'
    print(f"{SubSegment_list[0]} Sales {flag1} {round(var1)} % vs LY while Total income {flag2} {var2}% vs LY creating {flag3}")

Давайте посчитаем, что прямо сейчас в упомянутом выше списке есть Только 2 значения, A и B., тогда вывод, полученный из этого для l oop, содержит два оператора, но оба они имеют одинаковые значения, а именно:

A Sales up 184 % vs LY while Total income up 224.24% vs LY creating leverage
A Sales up 184 % vs LY while Total income up 224.24% vs LY creating leverage

Как я могу сгенерировать два уникальных оператора, учитывая данные каждой строки выглядят следующим образом:

Ожидаемый результат:

A Sales up 184% vs LY while Total income up 224.24% vs LY creating leverage
B Sales up 45% vs LY while Total income up 176.79% vs LY creating leverage

1 Ответ

3 голосов
/ 01 августа 2020

Вы можете использовать iterrows:

for _, value in df.iterrows():

    var1 = value['Sales']
    var2 = value['Income']

    seg1 = value['segment']

    flag1 = 'up' if var1>0 else 'down'
    flag2 = 'up' if var2>0 else 'down'

    print(f"{seg1} Sales {flag1} {var1}% vs LY while Total income {flag2} {var2}% vs LY creating leverage")

A Sales up 184.37% vs LY while Total income up 224.24% vs LY creating leverage
B Sales up 45.42% vs LY while Total income up 176.79% vs LY creating leverage
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...