首页 > 解决方案 > 如何避免使用 iloc 或对索引号 pandas 进行硬编码以将单个数据帧中的行动态提取到多个子集中?

问题描述

我的数据框看起来像这样

country1    state1  city1   District1
india   36  20  40
china   27  21  35
honkong 34  21  38
london  32  21  38
company technology  car brand   population
adf     java       Ford          40
ydfh    java      Hyundai        19
klyu    java      Nissan         47
hy6g    dotnet    Toyota         20
rghtr   dotnet    Hyundai        30
htryr   dotnet    hummer         12

我想从单个数据帧创建多个子集,我不想使用索引号或 iloc 函数或对索引号进行硬编码,因为它会在条目 london 或最后一个条目之后有新条目时过滤掉

如果有任何新条目,它也应该被捕获,任何线索如何在 pandas 或使用 numpy 中执行?希望这个问题很清楚

标签: pythonpandasnumpypandas-groupbypandas-datareader

解决方案


假设您的数据框保存为 df 您可以使用 groupby 并将分组的子数据保存到字典中以供将来参考。

d = {}
for group, frame in df.groupby('country1'):
    d[group] = frame

此外,如果您想 groupby 乘以列,请将列表传递给 groupby,如下所示

for group, frame in df.groupby(['country1', 'technology']):
    d[group] = frame

推荐阅读