熊猫-过滤数据集并将其组合

时间:2020-08-15 16:50:39

标签: python pandas

我正在过滤澳大利亚ABS的血统。 我正在获取以下血统数据。

allvic_url='ABS_CENSUS2011_T09/TOT+1+2+3+4+Z.TOT+TOTP+1101+1102+6101+3204+2303+2101+5201+2305+2306+3205+3304+7106+2201+3103+6902+4106+3206+3104+1201+1202+3307+3308+2102+3213+7115+9215+3106+4907+5107+2103+OTH+Z.2.SA2..A/all?detail=Full&dimensionAtObservation=AllDimensions'

然后,我遇到了问题,即使用新的2016年数据集来显示祖先随时间的变化,因为api非常令人困惑...这里http://stat.data.abs.gov.au/#。 (我想尝试说明郊区人口统计数据是如何变化的。)

我想要的输出是一个郊区级别的数据框,该数据框显示了血统随时间的变化。如果该api可以在此基础上为我提供更多历史数据,那也将是非常棒的。

Suburb  Ancestry Main   Ancestry Secondary  Ancestry increased most Percentage increase 2016-2011   

(即显示祖先的平均值是中文,并且随时间变化了x%)。

非常感谢您为解决此问题提供帮助-谢谢!

1 个答案:

答案 0 :(得分:2)

我相信(至少是一部分)您要问的问题是如何使用正则表达式过滤熊猫数据框。对于数据,我使用了您在数组中提供的一些场所值。对于您的用例,将按以下步骤进行操作:

from pandas import DataFrame

df_with_venues = DataFrame(
    {
        "Venue Category": [
            "Speakeasy",
            "Boutique",
            "Peruvian Restaurant",
            "Bakery",
            "Vietnamese Restaurant",
            "Asian Restaurant",
            "Hotel",
            "Whisky Bar",
            "Street Art",
            "Italian Restaurant",
            "Bookstore",
            "French Restaurant",
            "Café",
            "Sushi Restaurant",
            "Australian Restaurant",
            "Indian Restaurant",
            "Coffee Shop",
            "Bar",
            "Wine Bar",
            "Theater",
            "BBQ Joint",
            "Burger Joint",
        ]
    }
)

regex_filter_venues = df_with_venues[df_with_venues["Venue Category"].str.match(r".*Restaurant")]

您在问题中指定了您想要的餐厅,因此我在此解决方案中提供了该餐厅,但您应该可以使用任何有效的正则表达式替换字符串“。* Restaurant”。如果有人愿意的话,也可以作为参考,pandas regex的文档是here,并且还有关于如何使用pandas regex here

的精彩教程。