如何使用for循环按类别筛选行实现数据集子集化?
用循环/字典简化数据集子集化代码
方法一:手动指定国家+循环生成字典
原代码重复定义多个变量,用字典存储所有子集更整洁,也方便后续维护:
# 列出需要提取的国家(注意统一大小写,避免匹配失误) target_countries = ["Belgium", "Norway", "Portugal"] # 初始化空字典存子集 country_subsets = {} for country in target_countries: # 统一转小写匹配,避免数据中大小写不一致的问题 country_subsets[country] = df_sales[df_sales["Country"].str.lower() == country.lower()]
之后要调用某个国家的数据,直接用country_subsets["Belgium"]即可,不用单独记一堆变量名。
方法二:用groupby自动生成字典
如果想一次性处理所有国家,或者不确定具体要哪些,用groupby效率更高:
# 按Country分组后直接转成字典,键是国家名,值是对应数据框 country_subsets = dict(tuple(df_sales.groupby("Country")))
要是只需要特定几个国家,加个筛选就行:
target_countries = {"Belgium", "Norway", "Portugal"} country_subsets = {k: v for k, v in df_sales.groupby("Country") if k in target_countries}
注意:原代码里"portugal"是小写,建议统一数据中的Country列大小写(比如
df_sales["Country"] = df_sales["Country"].str.title()),避免出现匹配不到的情况。
内容的提问来源于stack exchange,提问作者David Gomez Bohorquez
相关产品推荐
相关产品推荐

