首页 > 解决方案 > 根据唯一值从现有数据框创建几个数据框

问题描述

我的 DF 如下所示

x  y  z  b
1  2  3  Max
12 32 8  Max
1  2  3  Jon
12 32 8  Max
1  25  3  Jon
12 32 81  Anna

所以我需要基于 b 列,取唯一值(在本例中为:Max、Jon、Anna)并创建 3 个新的 df,如下所示:

df_1:

x  y  z  b
1  2  3  Max
12 32 8  Max
12 32 8  Max

df_2:

x  y  z   b
1  2  3   Jon
1  25  3  Jon

df_3:

x  y  z   b
12 32 81  Anna

我一直在寻找答案,但我不知道如何创建新的 DF。你有什么想法?当然,在原始 DF 中还有更多独特的价值。

问候托马斯

标签: pythonpandasdataframefor-loopunique

解决方案


您可以groupby('b')制作字典:

dfs = {k:v for k,v in df.groupby('b')}

这是保存任意键的有效结构。特别是如果您事先不知道组的数量。

然后,您可以按键访问数据框:

>>> dfs['Max']
    x   y  z    b
0   1   2  3  Max
1  12  32  8  Max
3  12  32  8  Max

推荐阅读