python - 每次运行函数时如何更新数据框?
问题描述
我是 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
每次有一个新产品的新列表时,我都会将它导入到 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
但是,我的数据框中不能包含两个以上的变量。我希望数据框在使用该函数时变大。
解决方案
您应该避免每次在函数内部创建 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
推荐阅读
- sql - 将 SQL 数据库从 Azure 导出到本地时出错
- javascript - 如何使用逗号分割字符串?
- reactjs - 如何使用 Redux Tool Kit 的“createSlice”对 Redux 进行单元测试?
- kotlin - kotlin - 更新 kotlin 版本时的类型推断和类型不匹配
- java - 如何在没有秘密的情况下检查 JWT 令牌过期时间?
- javascript - Onfido SDK 一种文档类型直接捕获屏幕?
- perl - Perl 等效于 bash 命令
- java - 如何将普通的双精度数组转换为番石榴不可变数组
- c# - C# WPF Dispatcher Timer Tick 在单独的线程中
- asp.net-core - 将 Microsoft 登录添加到 ASP.NET Core Web 应用程序中的问题