gpt4 book ai didi

python - 使用棋盘图案对 Pandas DataFrame 进行切片

转载 作者:太空宇宙 更新时间:2023-11-03 16:29:23 25 4
gpt4 key购买 nike

如果我有一个 m x n 数据框,如何仅选择构成棋盘图案上黑色方 block 的值(请注意,m 可能不等于 n,并且可以更大、更小或等于另一个)?我尝试通过构建 bool 掩码来掩盖它,但它并不优雅。另请注意,这些值可能并不都是数字(列或行中可能有文本),因此严格使用 numpy 可能行不通。

最佳答案

您可以使用ogrid create a "checkerboard" :

In [11]: coords = np.ogrid[0:2, 0:3]

In [12]: checkerboard = (coords[0] + coords[1]) % 2 == 0
# use != for an inverted board

In [13]: checkerboard
Out[13]:
array([[ True, False, True],
[False, True, False]], dtype=bool)

考虑到这一点,您可以 NaN 所有其他值(这就是我认为您的“选择”/掩码的含义):

In [14]: df = pd.DataFrame([[1, 2, 3], [4, 5 ,6]], columns=list('ABC'))

In [15]: df.where(checkerboard)
Out[15]:
A B C
0 1.0 NaN 3.0
1 NaN 5.0 NaN

注意:您也可以使用整数执行此操作:

In [21]: (coords[0] + coords[1]) % 2
Out[21]:
array([[0, 1, 0],
[1, 0, 1]])

In [22]: ~(coords[0] + coords[1]) % 2
Out[22]:
array([[1, 0, 1],
[0, 1, 0]])

关于python - 使用棋盘图案对 Pandas DataFrame 进行切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37739621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com