【问题标题】:How to get a subset of a dataframe based on a list that corresponds to row indices?如何根据与行索引对应的列表获取数据帧的子集?
【发布时间】:2020-10-27 01:20:34
【问题描述】:

我有一个看起来像这样的 pandas 数据框:

row|a|b|
0 |1|2
1 |2|0
2 |1|1
3 |3|2
4 |1|1
5 |1|0

我想获取每列的平均值,但只针对第 1、3、4 行,然后与第 0、2、5 行的平均值进行比较。索引存储在一个 numpy 数组 keep = np.array([1,3,4])take = np.array([0,2,5]) 中。理想的输出应该是如下所示的数组或数据框:

keep |2|1
take |1|1

有人知道怎么做吗?

【问题讨论】:

    标签: python pandas dataframe row


    【解决方案1】:

    concat 怎么样:

    pd.concat({'keep':df.iloc[keep].mean(), 
               'take':df.iloc[take].mean()}
             ).unstack()
    

    输出:

            a    b
    keep  2.0  1.0
    take  1.0  1.0
    

    【讨论】:

    • 大部分工作!我最终只是将它们分开保存,因为输出形状与我正在寻找的有点不同
    • 那么这只是pd.concat里面的字典吗?
    • 我刚看到修改后的答案,unstack() 效果很好!!
    猜你喜欢
    • 2023-04-07
    • 2021-02-02
    • 2016-01-14
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    • 2011-11-24
    相关资源
    最近更新 更多