【问题标题】:How can I divide up a Pandas column based on its values?如何根据值划分 Pandas 列?
【发布时间】:2016-10-13 23:39:49
【问题描述】:

我正在研究泰坦尼克号的幸存者数据库,并创建了一个单独的数据框,其中仅包含“Fare”和“Cabin”列。 “票价”列已排序,数据框如下所示:

      Fare        Cabin
732  0.0000          NaN
413  0.0000          NaN
806  0.0000          A36
266  0.0000          NaN
633  0.0000          NaN
674  0.0000          NaN
815  0.0000         B102
372  0.0000  B52 B54 B56
21   3.1708          NaN
378  4.0125          NaN
872  5.0000  B51 B53 B55

票价也一路上涨 500.0000。 所以数据库的尾部看起来像这样:

     Fare        Cabin
679  512.3292  B51 B53 B55
737  512.3292         B101
258  512.3292          NaN
343  512.3292  B51 B53 B55
152       NaN          NaN

我想按 100 来分解这个数据框。因此,一个数据帧将包含从 0 ~100 的票价值,下一个将是 101 ~200,依此类推。我和 groupby 一起玩,但我一无所获。我难住了。谢谢。

【问题讨论】:

    标签: pandas slice


    【解决方案1】:

    你可以简单地写:

    df100 = df[(df.Fare < 100)]
    df200 = df[(df.Fare > 100) & (df.Fare < 200)]
    

    等等

    【讨论】:

    • 谢谢。有没有办法迭代这个?
    【解决方案2】:

    考虑df

    df = pd.DataFrame(dict(Fare=np.arange(500), Cabin='a'))
    

    使用pd.cut 获取分类分组

    cut = pd.cut(df.Fare, np.arange(7) * 100, include_lowest=True)
    

    这足以使用pd.get_dummies

    pd.get_dummies(cut)
    

    或者你可以使用它来分组

    gp = df.groupby(cut)
    

    【讨论】:

    • 谢谢。第一次看到cut。我让它与 groupby 一起工作并剪切。当我使用 get_dummies 时,我只得到布尔值(1 和 0)。
    猜你喜欢
    • 2023-04-08
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 2018-09-09
    相关资源
    最近更新 更多