将两个数字数据帧列合并为一个元组列[duplicate]

问题描述 投票:2回答:3

这个问题在这里已有答案:

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

例如:

A B
50.631456 5.57871    

C
(50.631456, 5.57871)
python pandas dataframe tuples
3个回答
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)

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

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)
© www.soinside.com 2019 - 2024. All rights reserved.