У меня 2 кол как

  Latitude       Longitude    
  35.827085869   -95.67496156

Оба находятся в плавании, и я хочу, чтобы это преобразовать в

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

Как я могу этого достичь?

4
No_body 2 Июл 2019 в 17:53

4 ответа

Лучший ответ

Преобразуйте два столбца в список списков, затем назначьте его новому столбцу.

# 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]
5
cs95 2 Июл 2019 в 14:55

Еще один, используя zip

df['final']=list(zip(df.Latitude,df.Longitude))
4
YO and BEN_W 2 Июл 2019 в 15:00

Вы также можете объединить их, указав тип каждого столбца как str, затем добавив его значения в виде строк вместе с предпочитаемыми вами скобками, и, наконец, поместив их в качестве значений для столбца final.

df['final'] = '[' + df['Latitude'].astype(str) + ', ' + df['Longitude'].astype(str) + ']'
0
Joe 3 Июл 2019 в 17:09

Вы также можете использовать apply:

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

   Latitude              ...                                      final
0  35.827086              ...               [35.827085869, -95.67496156]
3
zipa 2 Июл 2019 в 14:59