创建一个 DataFrame,其值作为连接的索引和列名
Make a DataFrame with its values as concatenated index and column names
我想创建一个 pandas DataFrame,其值作为连接的索引和列名。在下面的示例中,我将列名连接到行名;但是,反之亦然。
A B C
A AA AB AC
B BA BB BC
C CA CB CC
Numpy 的 char
模块
我们想在使用字符串特定函数的同时使用 Numpy 的广播。
设置
我使用 ['X', 'Y', 'Z']
的索引来更清楚地表明我所做的是准确的。
df = pd.DataFrame(index=['X', 'Y', 'Z'], columns=['A', 'B', 'C'])
解决方案
idx = df.index.to_numpy().astype(str)
col = df.columns.to_numpy().astype(str)
df.loc[:, :] = np.char.add(idx[:, None], col)
df
A B C
X XA XB XC
Y YA YB YC
Z ZA ZB ZC
另一种选择是将列列表乘以 df
的长度;然后在 axis=0
上使用 radd
从右边连接索引名称:
df.loc[:,:] = [df.columns.astype(str).tolist()]*df.shape[0]
df = df.radd(df.index.astype(str), axis=0)
或者反过来,索引列表乘以df
的宽度;然后在 axis=1
上使用 add
连接列名称:
df.loc[:,:] = list(zip(*[df.index.tolist()]*df.shape[1]))
df = df.add(df.columns, axis=1)
输出:
A B C
A AA AB AC
B BA BB BC
C CA CB CC
对于提供的数据示例,此代码可以解决问题:
df = df.apply(lambda x: x.index + x.name)
>>> df
'''
A B C
A AA AB AC
B BA BB BC
C CA CB CC
我想创建一个 pandas DataFrame,其值作为连接的索引和列名。在下面的示例中,我将列名连接到行名;但是,反之亦然。
A B C A AA AB AC B BA BB BC C CA CB CC
Numpy 的 char
模块
我们想在使用字符串特定函数的同时使用 Numpy 的广播。
设置
我使用 ['X', 'Y', 'Z']
的索引来更清楚地表明我所做的是准确的。
df = pd.DataFrame(index=['X', 'Y', 'Z'], columns=['A', 'B', 'C'])
解决方案
idx = df.index.to_numpy().astype(str)
col = df.columns.to_numpy().astype(str)
df.loc[:, :] = np.char.add(idx[:, None], col)
df
A B C
X XA XB XC
Y YA YB YC
Z ZA ZB ZC
另一种选择是将列列表乘以 df
的长度;然后在 axis=0
上使用 radd
从右边连接索引名称:
df.loc[:,:] = [df.columns.astype(str).tolist()]*df.shape[0]
df = df.radd(df.index.astype(str), axis=0)
或者反过来,索引列表乘以df
的宽度;然后在 axis=1
上使用 add
连接列名称:
df.loc[:,:] = list(zip(*[df.index.tolist()]*df.shape[1]))
df = df.add(df.columns, axis=1)
输出:
A B C
A AA AB AC
B BA BB BC
C CA CB CC
对于提供的数据示例,此代码可以解决问题:
df = df.apply(lambda x: x.index + x.name)
>>> df
'''
A B C
A AA AB AC
B BA BB BC
C CA CB CC