首页 > 解决方案 > 有条件地子集数据框

问题描述

任何关于更 Pythonic 分组方式的建议也值得赞赏

我有一个数据框“golfdf”,它由“团队”和“俱乐部”两列组成。

           Teams   Clubs
0          Aiden   Right
1          Alexa   Right
2          Alina   NaN
3          Allison Right
4          Amity   Right
5          Antoine NaN
6          Ben     NaN
...
35         Connor  Right

我试图将数据帧随机排列,然后将数据帧分成四组,每组最少两个,最多三个 NaN 值。

我洗牌使用:

gdf = golfdf.sample(frac=1)

然后使用以下方法分成四组:

n = int(len(gdf)/9)
groups_n = np.cumsum([0, n, n, n, n, n, n, n, n, len(gdf)-(8*n)])
d = {}
for i in range(9):
    d[i+1] = gdf.iloc[groups_n[i]:groups_n[i+1]]

输出如预期:

     Teams Clubs
8    Breanne NaN
5    Antoine NaN
27   Noah    NaN
16   Ellen  Left
     Teams Clubs
20   Helen   NaN
22   Keegan  NaN
28   Payton  NaN
32   Sean    NaN
...

但我不确定如何添加指定约束的条件。如果我遗漏了任何相关信息,请告诉我。

谢谢!

标签: pythonpandasdataframe

解决方案


推荐阅读