Создать pandas фрейм данных из вывода цикла for - PullRequest
3 голосов
/ 03 августа 2020

У меня есть следующий l oop, который генерирует несколько строк на основе входного фрейма данных:

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")

OUTPUT

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

Есть ли способ для создания нового фрейма данных из строк вывода, созданных из приведенного выше l oop.

Ожидаемый вывод1:

df:
     String
0    A Sales up 184.37% vs LY while Total income up 224.24% vs LY creating leverage
1    B Sales up 45.42% vs LY while Total income up 176.79% vs LY creating leverage

Ожидаемый вывод2:

df:
     String
0    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

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

column_names = ['String']
df= pd.DataFrame(columns = column_names)
df= pd.DataFrame({'Insight': c_1}, index=[0])

1 Ответ

1 голос
/ 03 августа 2020

To fle sh out @ Cedro c Комментарий Зопполо, вот минимальный пример со строками f.

    import pandas as pd

    df = pd.DataFrame({'Sales': [10, 20], 'Income': [20, -30]})
    
    def description(sales, income):
        return f'Sales up {sales}% while Total income {"up" if income > 0 else "down"} {income}%'

    df['descr'] = df.apply(lambda x: description(x['Sales'], x['Income']), axis=1)

Вывод:

   Sales  Income                                      descr
0     10      20     Sales up 10% while Total income up 20%
1     20     -30  Sales up 20% while Total income down -30%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...