Python:根据DataFrame中的列名创建新行

时间:2015-05-06 22:03:11

标签: python pandas row names

我想知道如何基于python数据帧中的列名行创建一个新行,并将其附加到同一数据帧。

例如

df = pd.DataFrame(np.random.randn(10, 5),columns=['abx', 'bbx', 'cbx', 'acx', 'bcx'])

我想根据列名创建一个新行:  b | b | b | c | c |通过获取列名的中间字符。

我的想法是稍后使用该新行来对列进行多索引。

2 个答案:

答案 0 :(得分:3)

我假设这是你想要的,因为你没有回复,我们可以append通过从压缩df列创建一个dict和中间字符的列表理解来创建一个新行(假设该列名称长度为3):

In [126]:

df.append(dict(zip(df.columns, [col[1] for col in df])), ignore_index=True)
Out[126]:
          abx         bbx        cbx        acx         bcx
0   -0.373421  -0.1005462 -0.8280985 -0.1593167    1.335307
1    1.324328  -0.6189612  -0.743703  0.9419248    1.282682
2   0.3730312 -0.06697892   1.113707 -0.9691056    1.779643
3  -0.6644958    1.379606 -0.3751724  -1.135034   0.3287292
4   0.4406139  -0.5767996 -0.2267589  -1.384412 -0.03038372
5   -1.242734   -0.838923 -0.6724592   1.405247  -0.3716862
6   -1.682637    -1.69309  -1.291833   1.781704   0.6321988
7  -0.5793783  -0.6809975    1.03502 -0.6498381   -1.124236
8    1.589016    1.272961  -1.968225  0.5515182   0.3058628
9   -2.275342    2.892237   2.076253 -0.1422845 -0.09776171
10          b           b          b          c           c

答案 1 :(得分:0)

ix ---让您阅读整行 - 您只需说出您想要的哪一行。 然后你得到你的列并将它们分配给你想要的原始。

请参阅下面的示例。

virData = DataFrame(df)

virData.columns = virData.ix[1].values

virData.columns