pandas - 使用 pandas 过滤功能后返回一个列表
问题描述
我是 Pandas 的新手,遇到了一些非常棘手的问题。
我想做的是按各个列中的 aa 值对样本进行分组,然后根据该列值运行 api 调用。
那部分已经完成。创建对象后,我想返回对象并将其存储到局部变量中,这证明了具有挑战性的部分。
这是我的 .CSV 文件中的数据集。
Sample Sample Type Tumor Age Location
1 Blood Benign 43 LUNG
2 FFPE Benign 23 LUNG
3 Blood Benign 12 LUNG
我正在过滤血液或 FFPE 的样本类型,然后应用一个函数来创建样本
def create_samples(x):
sample_objects = Sample.create({
'count': x.shape[0],
'type': x.iloc[0]['Sample Type']
})
return sample_objects
if __name__ == '__main__':
df = pd.read_csv(path)
blood_samples, ffpe_samples = df.groupby('Sample Type').filter(lambda x: create_samples(x))
因为有两个 SampleTypes,所以它对函数进行了两次迭代,我相信它首先创建 Blood Samples,然后再创建 FFPE Samples。
在两次创建对象时,我都想将这些对象分别返回给变量 blood_samples 和 variable_samples。有可能这样做吗?
我能想到的唯一技巧是分配一些我希望避免的全局变量。
想法?
解决方案
你用groupby.filter
错了。在groupby
上下文中,filter
接受一个返回布尔值的函数。结果是一个组合数据框,仅包含函数返回的组True
你想要的是这个
blood_samples, ffpe_samples = (create_samples(d) for _, d in df.groupby('Sample Type'))
这只有在恰好有两个唯一值时才有效df.Sample
将其保留为字典可能会更好
sample_dict = {n: create_samples(d) for n, d in df.groubpy('Sample')}
推荐阅读
- javascript - 对象[key]满足前提条件的foreach键
- django-2.2 - 如何解决在 django 中播放视频的问题?
- node.js - 数组未在后端初始化
- c# - 将 JSON 反序列化为 .NET 多态对象集合,这些对象包含格式化为字符串的 Point 值
- sql - 如何在不使用视图的情况下在 Postgres 中制定此查询
- javascript - axios redis依赖注入的node.js工厂函数
- macos - 如何让mac使用emacs 26
- node.js - 使用writefile()创建Json文件,查询器,编辑结果
- r - 使用 R 连接到远程 SQL Server
- python - 使用 python 烧瓶的 Firebase 匿名登录