将两个数字数据帧列合并到一个元组列中

时间:2018-03-04 22:19:25

标签: python pandas dataframe tuples

我想创建一个将2列组合在一起的新列。我查看了互联网,但一无所获。我该怎么办:

前:

A B
50.631456 5.57871    

C
(50.631456, 5.57871)

3 个答案:

答案 0 :(得分:3)

结帐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)

答案 1 :(得分:2)

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

答案 2 :(得分:1)

你可以使用申请。

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)