python - 沿非对角线连接字符串

标签 python pandas numpy

设置

import pandas as pd
from string import ascii_uppercase

df = pd.DataFrame(np.array(list(ascii_uppercase[:25])).reshape(5, 5))

df

   0  1  2  3  4
0  A  B  C  D  E
1  F  G  H  I  J
2  K  L  M  N  O
3  P  Q  R  S  T
4  U  V  W  X  Y

问题
如何沿着非对角线连接字符串?

预期结果

0        A
1       FB
2      KGC
3     PLHD
4    UQMIE
5     VRNJ
6      WSO
7       XT
8        Y
dtype: object

我尝试过的

df.unstack().groupby(sum).sum()

这很好用。但@Zero 的答案要快得多。

最佳答案

你可以做

In [1766]: arr = df.values[::-1, :] # or np.flipud(df.values)

In [1767]: N = arr.shape[0]

In [1768]: [''.join(arr.diagonal(i)) for i in range(-N+1, N)]
Out[1768]: ['A', 'FB', 'KGC', 'PLHD', 'UQMIE', 'VRNJ', 'WSO', 'XT', 'Y']

In [1769]: pd.Series([''.join(arr.diagonal(i)) for i in range(-N+1, N)])
Out[1769]:
0        A
1       FB
2      KGC
3     PLHD
4    UQMIE
5     VRNJ
6      WSO
7       XT
8        Y
dtype: object

您也可以执行arr.diagonal(i).sum(),但''.join更为明确。

关于python - 沿非对角线连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46598292/

相关文章:

python - 将浮点坐标添加到 numpy 数组

python - 是否可以在defaultdict中调用迭代器来获取下一个键值?

Python Psycopg2 For 循环,大型数据库问题

python - read_sql 和 redshift 在 unicode 上给出错误

python - python中的张量点运算

python - 在 Python 中从 Numpy 数组中删除零

python - 在循环中合并Python数组?

python - 使用 SIFT OpenCV 处理大图像时出错

python - 带标签转置日期时间

python - 分区聚合 - pandas Dataframe