【问题标题】:take subset from a dataframe从数据框中获取子集
【发布时间】:2021-08-11 17:16:34
【问题描述】:

我打算从数据框中获取一个子集。

A B C Label
3 2 3 chair
2 4 5 table
3 2 3 table
2 4 5 chair
3 2 3 drawer
2 4 5 drawer
3 2 3 chair
2 4 5 table

我知道第一步是根据标签按数据框分组。然后我想取一个只有标签“椅子”、“椅子和桌子”、“椅子和桌子和抽屉”的行子集,并将其放入一个新的数据框(最后会有 3 个单独的数据框)。 如果我将数据转换为 numpy 数组并分离标签,是否可以这样做?

谢谢!

【问题讨论】:

    标签: python pandas dataframe numpy


    【解决方案1】:

    IIUC,您可以像这样简单地选择 DataFrame 的所需行:

    df1 = df[df["Label"]=="chair"]
    df2 = df[df["Label"].isin(["chair", "table"])]
    df3 = df[df["Label"].isin(["chair", "table", "drawer"])]
    

    【讨论】:

      【解决方案2】:

      您可以在此处使用带有布尔索引的字典,它应该可以动态解决它:

      u = df['Label'].unique()
      l = [u[:e+1] for e in range(len(u))]
      d = {' & '.join(i):df[df['Label'].isin(i)] for i in l}
      

      print(d['chair'],'\n------\n',d['chair & table'],'\n------\n',d['chair & table & drawer'])
      
       A  B  C  Label
      0  3  2  3  chair
      3  2  4  5  chair
      6  3  2  3  chair 
      ------
          A  B  C  Label
      0  3  2  3  chair
      1  2  4  5  table
      2  3  2  3  table
      3  2  4  5  chair
      6  3  2  3  chair
      7  2  4  5  table 
      ------
          A  B  C   Label
      0  3  2  3   chair
      1  2  4  5   table
      2  3  2  3   table
      3  2  4  5   chair
      4  3  2  3  drawer
      5  2  4  5  drawer
      6  3  2  3   chair
      7  2  4  5   table
      

      【讨论】:

        猜你喜欢
        • 2015-05-10
        • 1970-01-01
        • 2016-05-09
        • 1970-01-01
        • 1970-01-01
        • 2021-10-24
        • 1970-01-01
        • 1970-01-01
        • 2018-12-11
        相关资源
        最近更新 更多