首页 > 解决方案 > 通过基于条件生成可能的组合将数据帧拆分为多个数据帧

问题描述

我有一个下面的数据框

        df = 
        city         value
        hyderabad     1
        chennai       1
        mumbai        2
        pune          2
        delhi         3
        nodia         3
    

我想将数据帧拆分为多个数据帧,以便为每个数据帧生成一个组合,不包括循环中具有相同值的行。结果集如下所示。

df =  city         value
      hyderabad     1
      mumbai        2
      delhi         3
      
df =  city         value
      hyderabad     1
      mumbai        2
      nodia         3
      
      
df =  city         value
      hyderabad     1
      pune          2
      delhi         3
      
df =  city         value
      hyderabad     1
      pune          2
      nodia         3

      
df =  city         value
      chennai        1
      mumbai         2
      delhi          3
      
df =  city         value
      chennai        1
      mumbai         2
      nodia          3

df =  city         value
      chennai        1
      pune           2
      nodia          3

df =  city         value
      chennai        1
      pune           2
      delhi          3

完成这项工作的最简单方法是什么,因为我不知道我将提前拥有多少行数据。

标签: python-3.xpandasdataframe

解决方案


尝试:

from itertools import product

for c in product(*[g.index.tolist() for _, g in df.groupby("value")]):
    print(df.loc[c, :])
    print()

印刷:

        city  value
0  hyderabad      1
2     mumbai      2
4      delhi      3

        city  value
0  hyderabad      1
2     mumbai      2
5      nodia      3

        city  value
0  hyderabad      1
3       pune      2
4      delhi      3

        city  value
0  hyderabad      1
3       pune      2
5      nodia      3

      city  value
1  chennai      1
2   mumbai      2
4    delhi      3

      city  value
1  chennai      1
2   mumbai      2
5    nodia      3

      city  value
1  chennai      1
3     pune      2
4    delhi      3

      city  value
1  chennai      1
3     pune      2
5    nodia      3


推荐阅读