Return 使用 pandas 过滤功能后的列表
Return a list after using the pandas filter function
我是 Pandas 的新手,遇到了一些非常棘手的问题。
我想做的是按相应列中的值对样本进行分组,然后 运行 一个 api 调用基于该列值。
这部分已经完成了。创建对象后,我想 return 对象并将其存储到局部变量中,这证明了具有挑战性的部分。
这是我的 .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))
它遍历函数两次,因为有两个 SampleType,我相信它首先创建血液样本,然后再创建 FFPE 样本。
在两次创建对象时,我想将这些对象分别 return 和 blood_samples 和 variable_samples 变量。这可能吗?
我能想到的唯一技巧是分配一些我希望避免的全局变量。
想法?
您使用的 groupby.filter
有误。在 groupby
上下文中,filter
接受一个 returns 布尔值的函数。结果是一个组合数据框,仅包含函数返回 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')}
我是 Pandas 的新手,遇到了一些非常棘手的问题。
我想做的是按相应列中的值对样本进行分组,然后 运行 一个 api 调用基于该列值。
这部分已经完成了。创建对象后,我想 return 对象并将其存储到局部变量中,这证明了具有挑战性的部分。
这是我的 .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))
它遍历函数两次,因为有两个 SampleType,我相信它首先创建血液样本,然后再创建 FFPE 样本。
在两次创建对象时,我想将这些对象分别 return 和 blood_samples 和 variable_samples 变量。这可能吗?
我能想到的唯一技巧是分配一些我希望避免的全局变量。
想法?
您使用的 groupby.filter
有误。在 groupby
上下文中,filter
接受一个 returns 布尔值的函数。结果是一个组合数据框,仅包含函数返回 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')}