连接两列以进行自定义传递

时间:2019-03-13 17:10:08

标签: python pandas dataframe apply

我有一个这样的数据框,其中“组合”列看起来像[(-34,-58),(-3,-5)]。但我希望将其转换为['-34,-58,-3,-5']。我该如何实现?

df = pd.DataFrame(
    {
     'X_1': [-34, -1, -33, 4, 10],
     'Y_1': [-58, -4, -70, -74, -66],
     'X_2': [-3, -1, -3, 4.0, 1],
     'Y_2': [-5, -4, -7, -7.8, -6]})

df['Coordinates_Top_right'] = list(zip(df.X_1, df.Y_1))
df['Coordinates_top_left'] = list(zip(df.X_2, df.Y_2))
df['combine'] = df[['Coordinates_Top_right','Coordinates_top_left']].apply(list,axis=1)

#Tried this but doesnt give me the desired output:

df['area'] = df[['Coordinates_Top_right','Coordinates_top_left']].apply(list,axis=1)

2 个答案:

答案 0 :(得分:0)

使用您自己的匿名函数,而不是使用内置方法

DAG

答案 1 :(得分:0)

使用:

import itertools
df['combine'] = df[['Coordinates_Top_right','Coordinates_top_left']].\
                       apply(lambda x: list(itertools.chain(*x)),axis=1)
print(df)

   X_1  Y_1  X_2  Y_2 Coordinates_Top_right Coordinates_top_left  \
0  -34  -58 -3.0 -5.0            (-34, -58)         (-3.0, -5.0)   
1   -1   -4 -1.0 -4.0              (-1, -4)         (-1.0, -4.0)   
2  -33  -70 -3.0 -7.0            (-33, -70)         (-3.0, -7.0)   
3    4  -74  4.0 -7.8              (4, -74)          (4.0, -7.8)   
4   10  -66  1.0 -6.0             (10, -66)          (1.0, -6.0)   

                  combine  
0  [-34, -58, -3.0, -5.0]  
1    [-1, -4, -1.0, -4.0]  
2  [-33, -70, -3.0, -7.0]  
3     [4, -74, 4.0, -7.8]  
4    [10, -66, 1.0, -6.0]