小编dan*_*ota的帖子

在SQLAlchemy模型中存储pandas DataFrame

我正在构建一个烧瓶应用程序,允许用户上传CSV文件(包含不同的列),预览上传的文件,生成摘要统计信息,执行复杂的转换/聚合(有时通过Celery作业),然后导出修改后的数据.上传的文件被读入pandas DataFrame,这使我能够优雅地处理大多数复杂的数据工作.

我希望这些DataFrame以及相关的元数据(上传时间,上传文件的用户ID等)能够持续存在,并且可供多个用户传递到各种视图.但是,我不确定如何最好地将数据合并到我的SQLAlchemy模型中(我在后端使用PostgreSQL).

我考虑过三种方法:

  • 将DataFrame填入a PickleType并直接存储在DB中.这似乎是最直接的解决方案,但意味着我将大型二进制对象粘贴到数据库中.
  • 挑选DataFrame,将其写入文件系统,并将路径存储为模型中的字符串.这使数据库保持较小,但在备份数据库时允许用户执行删除以前上载的文件等操作时增加了一些复杂性.
  • 将DataFrame转换为JSON(DataFrame.to_json())并将其存储为json类型(映射到PostgreSQL的json类型).这增加了每次访问DataFrame时解析JSON的开销,但它也允许通过PostgreSQL JSON运算符直接操作数据.

鉴于每个的优点和缺点(包括我不知道的那些),是否有一种将pandas DataFrames合并到SQLAlchemy模型中的首选方法?

python sqlalchemy flask pandas

11
推荐指数
1
解决办法
1363
查看次数

使用ddply分配组ID

来自R新手的非常基本的表现问题.我想通过唯一的字段组合为数据框中的每一行分配一个组ID.这是我目前的做法:

> # An example data frame
> df <- data.frame(name=c("Anne", "Bob", "Chris", "Dan", "Erin"), 
                   st.num=c("101", "102", "105", "102", "150"), 
                   st.name=c("Main", "Elm", "Park", "Elm", "Main"))
> df
   name st.num st.name
1  Anne    101    Main
2   Bob    102     Elm
3 Chris    105    Park
4   Dan    102     Elm
5  Erin    150    Main
> 
> # A function to generate a random string
> getString <- function(size=10) return(paste(sample(c(0:9, LETTERS, letters), size, replace=TRUE), collapse=''))
>
> # Assign a random string for each unique …
Run Code Online (Sandbox Code Playgroud)

r plyr

7
推荐指数
1
解决办法
5679
查看次数

根据pandas DataFrame中的列值有条件地替换多个列

我想基于第一组列中的值(具体地,第一列中的一列是空白的),同时将多列的值替换为其他列中的对应值.这是我正在尝试做的一个例子:

import pandas as pd

df = pd.DataFrame({'a1':['m', 'n', 'o', 'p'],
                   'a2':['q', 'r', 's', 't'],
                   'b1':['',  '',  'a', '' ],
                   'b2':['',  '',  'b',  '']})

df

#   a1 a2 b1 b2
# 0  m  q
# 1  n  r
# 2  o  s  a  b
# 3  p  t
Run Code Online (Sandbox Code Playgroud)

我想将b1和b2中的''值替换为a1和a2中的相应值,其中b1为空:

#   a1 a2 b1 b2
# 0  m  q  m  q
# 1  n  r  n  r
# 2  o  s  a  b
# 3  p  t  p  t
Run Code Online (Sandbox Code Playgroud)

这是我的思考过程(我对熊猫来说相对较新,所以我可能会说这里有一个很重的R口音):

missing …
Run Code Online (Sandbox Code Playgroud)

python pandas

4
推荐指数
1
解决办法
3066
查看次数

标签 统计

pandas ×2

python ×2

flask ×1

plyr ×1

r ×1

sqlalchemy ×1