【发布时间】:2017-03-08 09:19:27
【问题描述】:
我有一个名为 house 的 pandas 数据框。一列是houseID,我只想获取1000个不同房屋的信息。有超过 1 行具有相同的 houseID(行数或多或少的房屋)。为此,我不能只获得前 1000 行,我需要这样的东西:
SELECT * FROM houses WHERE COUNT(DISTINCT houseID) <= 1000
简化示例(具有 3 个不同 houseID 的原始数据框,在此简化示例中我想要 2 个不同 houseID):
from collections import OrderedDict
import pandas as pd
housesDict = OrderedDict([ ('houseID', ['1', '3', '1','2','2','1','3','1','1']),
('Cost', [150, 200, 50,100,75,18,10,23,19])])
houses = pd.DataFrame.from_dict(housesDict)
print(houses)
如果我想将不同的房屋数量限制为 2,我的预期输出是:
housesDict = OrderedDict([ ('houseID', ['1', '3', '1','1','3','1','1']),
('Cost', [150, 200, 50,18,10,23,19])])
houses = pd.DataFrame.from_dict(sales)
print(houses)
我该怎么做?
编辑: 我有解决办法,谢谢你的帮助:
a = list(df.drop_duplicates(subset=["houseID"]).iloc[:2]['houseID'])
df[df['houseID'].isin(a)]
【问题讨论】:
-
您想要的结果与您的问题描述不符,例如为什么 2 在它也有 2 个与 3 相同的不同销售额时被排除在外?除了
df.groupby('houseID').filter(lambda x: len(x) <= 2)之后你还在吗? -
@EdChum 我想要 1000 个不同的 houseID 的所有行。总的来说,在我的表中,我需要 1000 个不同的 houseID,我希望在这 1000 个不同的 houseID 的原始数据框中拥有所有行