我很难将列表理解和groupby函数应用到Pandas dataframe子集中。
我的dataframe有一个列"patid“,它包含一个病人ID的列表,例如。25001。病人(25001)将有多行。因此,在该示例的基础上,10,000行mmay只能保存10名患者的数据。我想获取列表patidList,并返回一个只有列“patid”中的值与dataframe的patid列中的一个list匹配的行的数据。
我已经使用这段代码细分了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()然而,有人向我建议,如果我使用列表理解和群组功能,我可能会看到速度加快。我不知道该怎么做。请注意:我对这里的速度感兴趣。任何可能的加速都是有用的。我已经在多个核上运行了。即使从一个列表到一个元组的速度有很小的提高,这也是非常有用的。谢谢。
发布于 2022-08-28 16:47:04
试着做以下工作:
Datdaframe[dataframe[“patid”].isin(patidList)]https://stackoverflow.com/questions/73520299
复制相似问题