沿非对角线连接字符串

2024-04-16 17:17:27 发布

您现在位置:Python中文网/ 问答频道 /正文

设置

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的答案要快得多。你知道吗


Tags: fromimportdataframepandasdfstringasnp
1条回答
网友
1楼 · 发布于 2024-04-16 17:17:27

你能做到的

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更显式。你知道吗

相关问题 更多 >