【问题标题】:How to slice a pandas dataframe (get a subset)? [closed]如何切片熊猫数据框(获取子集)? [关闭]
【发布时间】:2021-12-04 22:23:45
【问题描述】:

如何在特定 x,y 位置将数据帧切片为子数据帧?

例如如何获取左上角、右上角、左下角、右下角和中间 2x2 区域作为子集数据帧?

df = pd.DataFrame([
    [16, 3, 2, 13],
    [5, 10, 11, 8],
    [9, 6, 7, 12],
    [4, 15, 14, 1]            
])

预期:

# top-left 2x2
[
    [16, 3],
    [5, 10]         
]
# center 2x2
[
    [10, 11],
    [16, 17]         
]

# etc for top-right, bottom-left, bottom-right.

【问题讨论】:

  • 请提供预期输出

标签: python pandas slice


【解决方案1】:

你可以使用底层的 numpy 数组(你也可以使用 pandas 和 iloc 但是为什么要让事情变得更复杂呢?)

a = df.values
x,y = a.shape
X,Y = x//2,y//2
a[:2,:2],a[-2:,:2],a[:2,-2:],a[-2:,-2:],a[X-1:X+1, Y-1:Y+1]

输出:

(array([[16,  3],
        [ 5, 10]]),
 array([[ 9,  6],
        [ 4, 15]]),
 array([[ 2, 13],
        [11,  8]]),
 array([[ 7, 12],
        [14,  1]]),
 array([[10, 11],
        [ 6,  7]]))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-03
    • 2023-01-26
    • 2015-08-11
    • 1970-01-01
    • 2018-07-28
    • 2018-07-14
    • 2021-07-23
    • 2016-03-28
    相关资源
    最近更新 更多