连接列并使用列名作为新列中的二进制功能

时间:2015-08-19 13:53:35

标签: python pandas

我目前有一个DataFrame,其中有两列包含相同类型的数据:

id   foo   bar
1    f1    b1
2    f2    b2
3    f3    b3

我知道如何连接这两列,但我还希望foobar作为二进制功能出现在另一列中,指示它们最初来自哪个列,如下所示: / p>

id   foobar  column
1    f1      foo
2    f2      foo
3    f3      foo
4    b1      bar
5    b2      bar
6    b3      bar

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

df = DataFrame({'foo': ['f1', 'f2', 'f3'], 'bar': ['b1', 'b2', 'b3']})

print df

  bar foo
0  b1  f1
1  b2  f2
2  b3  f3

cols = ''.join(list(df))
df = concat([df.foo, df.bar], keys=df.columns).reset_index(0)
df.columns = ['source', cols]
print df

  source barfoo
0    bar     f1
1    bar     f2
2    bar     f3
0    foo     b1
1    foo     b2
2    foo     b3