gpt4 book ai didi

python - 如何选择限制列数据框的数量? PYTHON

转载 作者:太空宇宙 更新时间:2023-11-04 05:12:30 24 4
gpt4 key购买 nike

我有一个名为 houses 的 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)]

最佳答案

如果你想要不同的值,你可以简单地使用 drop_duplicates

df = df.drop_duplicates(subset=["houseID"]).iloc[:1000]

如果想限制重复次数,可以使用groupby.transform('count')使用 bool 索引。

df.loc[df.groupby("houseID")["houseID"].transform('count') < 3].iloc[:1000]

编辑:误解了问题,您可以使用上面的函数来索引值。

# gets first 1000 unique id's
unique_ids = df.drop_duplicates(subset=["houseID"]).iloc[:1000]["houseID"]
# selects rows if their ID's are in unique_id dataframe
df = df.loc[df["houseID"].isin(unique_ids)]

关于python - 如何选择限制列数据框的数量? PYTHON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42667315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com