假设我有这个数据框
id x y
0 a hello
0 b test
1 c hi
2 a hi
3 d bar
我希望将x和y连接成一个像这样保留其ID的列
id x
0 a
0 b
1 c
2 a
3 d
0 hello
0 test
1 hi
2 hi
3 bar
如果我想为concat列提供一个新名称? (例如'x'到'xy')
答案 0 :(得分:1)
我认为pandas.concat
不包含设置新column
名称(see docs)的选项,但您可以这样指定:
从:
开始 id x y
0 0 a hello
1 0 b test
2 1 c hi
3 2 a hi
4 3 d bar
df.set_index('id', inplace=True)
pd.DataFrame(pd.concat([df.x, df.y]), columns=['xy']).reset_index()
id xy
0 0 a
1 0 b
2 1 c
3 2 a
4 3 d
5 0 hello
6 0 test
7 1 hi
8 2 hi
9 3 bar
答案 1 :(得分:1)
如果行的排序不重要,您可以使用stack
:
print df
id x y
0 0 a hello
1 0 b test
2 1 c hi
3 2 a hi
4 3 d bar
s = df.set_index('id').stack()
s.index = s.index.droplevel(-1)
s.name = 'xy'
print pd.DataFrame(s).reset_index()
id xy
0 0 a
1 0 hello
2 0 b
3 0 test
4 1 c
5 1 hi
6 2 a
7 2 hi
8 3 d
9 3 bar