使用列表解析和groupby对Pandas Dataframe 进行子集化

g52tjvyc  于 2022-12-21  发布在  其他
关注(0)|答案(1)|浏览(145)

我很难应用列表理解和groupby函数来子集化Pandas Dataframe 。
我的 Dataframe 有一列“患者ID”,其中包含患者ID列表,例如.25001。患者(25001)将具有多行。因此,对于该示例,具有10,000行m可能仅包含10名患者的数据。我想获取列表patidList并返回一个 Dataframe ,其中仅包含“patid”列中的值与 Dataframe 的patid列中的一个patid匹配。
我已经用这段代码对 Dataframe 进行了子集化,我知道这段代码在速度上有点瓶颈,我已经大大减少了这个例子中列表和 Dataframe 的大小,这只是为了练习:

class TestClass():

    def __init__(self):
        dictExample = {
            "patid" : ["25001", "25001", "25001", "999", "999"],
            "interesting_stuff" : ["a","b","c","d","e"]
        }
        self.ioDF = pd.DataFrame(dictExample)

    def someMethod(self):
        patidList = ["25001"]
        reducedDF = self.ioDF.loc[self.ioDF['patid'].isin(patidList)]

testClass = TestClass()
testClass.someMethod()

但是,有人建议我使用列表理解和groupby函数可以加快速度。我不知道如何做到这一点。请注意:我对这里的速度很感兴趣,我已经在多核上运行了,即使从列表到元组的速度有一小部分提高,那也是有贡献的。

f0brbegy

f0brbegy1#

请尝试执行以下操作:

Datdaframe[dataframe[“patid”].isin(patidList)]

相关问题