Как обновлять фрейм данных каждый раз, когда я запускаю функцию? - PullRequest
0 голосов
/ 07 февраля 2019

Я новичок в Python и не могу найти тему в SO, которая отвечает на мой вопрос.У меня есть собственная определенная функция, которая подсчитывает количество консультантов и клиентов на продукт.

Вот функция

def countTrigger():
    statistics = pd.DataFrame(
            data = {'Date': [datetime.datetime.now().strftime("%Y-%m-%d")], 
                    'Product': [input()],
                    'Advisor': [len(set(df['Advisor id']))],
                    'Customers': [df.shape[0]]}) 
    global df
    df = pd.DataFrame(statistics)
    return df

df - это фрейм данных, в котором есть все клиенты и консультанты.df будет листом Excel, который я импортирую в Python каждый раз, когда появляется новый список с новым продуктом.

Сначала я запускаю countTrigger() один раз и пишу Product A в консоль, а затем запускаю countTrigger() второй раз с Product B в консоли.

Я хочу, чтобы выводПохоже, здесь, где я запускаю countTrigger(), появляется новая строка с новой статистикой.Можно ли также удалить Product A из верхнего левого угла ?:

Product A
         Date    Product  Advisors  Customers
0  2019-02-07  Product A        30        175
1  2019-02-07  Product B        40        180

Другими словами, как обновлять фрейм данных, statistics, каждый раз, когда я запускаю функцию countTrigger()?

Большое спасибо

Редактировать: Теперь я добавил:

global df
df = pd.DataFrame(statistics)
return df

Однако я не могу получить более двух переменных в моем фрейме данных.Я хочу, чтобы размер данных увеличивался при использовании этой функции.

1 Ответ

0 голосов
/ 08 февраля 2019

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

def update():
    global stat_df
    data = {'Date': datetime.datetime.now().strftime("%Y-%m-%d"),
            'Product': input(),
            'Advisor': 'Mr.X',
            'Customers': 1}
    stat_df = stat_df.append(data, ignore_index=True)


##Init the DataFrame
data = {'Date': [],
        'Product': [],
        'Advisor': [],
        'Customers': []}
stat_df = pd.DataFrame(data=data)


##Update the DataFrame
update()
print(stat_df)

update()
print(stat_df)

update()
print(stat_df, '\n')

Вывод:

asd
         Date Product Advisor  Customers
0  2019-02-08     asd    Mr.X        1.0 

asda
         Date Product Advisor  Customers
0  2019-02-08     asd    Mr.X        1.0
1  2019-02-08    asda    Mr.X        1.0 

asdasd
         Date Product Advisor  Customers
0  2019-02-08     asd    Mr.X        1.0
1  2019-02-08    asda    Mr.X        1.0
2  2019-02-08  asdasd    Mr.X        1.0 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...