我想创建一个新列,将两个列组合在一起。我在互联网上搜寻了一下,但没有找到任何有用的信息。如何操作:
例如:
例如:
A B
50.631456 5.57871
C
(50.631456, 5.57871)
A B
50.631456 5.57871
C
(50.631456, 5.57871)
list
+ zip
是一种高效的方法:
df['C'] = list(zip(df.A, df.B))
# A B C
# 0 50.631456 5.57871 (50.631456, 5.57871)
性能
如预期所料,对于大型数据框,df.apply
方法与 lambda
结合使用会循环低效。
df = pd.concat([df]*10000)
%timeit list(zip(df.A, df.B)) # 3.14ms
%timeit df.apply(tuple, axis=1) # 378ms
%timeit df.apply(lambda x: (x.A,x.B), axis=1) # 577ms
DataFrame.apply
。df = pd.DataFrame(np.random.randint(0, 10, (6, 2)), columns=['a', 'b'])
df['c'] = df.apply(tuple, axis=1)
df
返回值
a b c
0 8 1 (8, 1)
1 3 3 (3, 3)
2 2 8 (2, 8)
3 6 2 (6, 2)
4 2 2 (2, 2)
5 8 5 (8, 5)
df = pd.DataFrame({'A': {0: 50.631456}, 'B': {0: 5.57871}})
df
Out[162]:
A B
0 50.631456 5.57871
df['C'] = df.apply(lambda x: (x.A,x.B), axis=1)
df
Out[155]:
A B C
0 50.631456 5.57871 (50.631456, 5.57871)