连接两列并获取新列

时间:2019-07-02 14:53:48

标签: python python-3.x pandas python-2.7

我有2个山口

  Latitude       Longitude    
  35.827085869   -95.67496156

两者都处于浮动状态,我希望将其转换为

 Latitude       Longitude       final
 35.827085869   -95.67496156    [35.827085869,-95.67496156]

我该如何实现?

4 个答案:

答案 0 :(得分:5)

将两列转换为列表列表,然后将其分配给新列。

# Pandas < 0.24
# df['final'] = df[['Latitude', 'Longitude']].values.tolist()
# Pandas >= 0.24
df['final'] = df[['Latitude', 'Longitude']].to_numpy().tolist()
df

    Latitude  Longitude                         final
0  35.827086 -95.674962  [35.827085869, -95.67496156]

请注意,它们必须为列表,如果要分配NumPy数组,则不能将它们作为单列分配回去。


另一种选择是使用agg进行缩减:

df['final'] = df[['Latitude', 'Longitude']].agg(list, axis=1)
df

    Latitude  Longitude                         final
0  35.827086 -95.674962  [35.827085869, -95.67496156]

答案 1 :(得分:4)

再使用zip

df['final']=list(zip(df.Latitude,df.Longitude))

答案 2 :(得分:3)

您也可以使用apply

df['final'] = df[['Latitude', 'Longitude']].apply(list, axis=1)

   Latitude              ...                                      final
0  35.827086              ...               [35.827085869, -95.67496156]

答案 3 :(得分:0)

您还可以通过将每列类型转换为str,然后将其值作为字符串以及所需的方括号添加到字符串中,然后最后将它们作为列final的值来添加它们。

df['final'] = '[' + df['Latitude'].astype(str) + ', ' + df['Longitude'].astype(str) + ']'