我想知道如何基于python数据帧中的列名行创建一个新行,并将其附加到同一数据帧。
例如
df = pd.DataFrame(np.random.randn(10, 5),columns=['abx', 'bbx', 'cbx', 'acx', 'bcx'])
我想根据列名创建一个新行:
b | b | b | c | c |
通过获取列名的中间字符。
我的想法是稍后使用该新行来对列进行多索引。
答案 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