Что касается ошибки, получаемой с помощью df.insert()
, функция не возвращает (т. Е. Возвращает None
), и если вы присваиваете фрейм данных, используя df = df.insert(...)
, это может быть источником проблемы. Вместо этого пропустите задание и просто используйте df.insert(...)
.
Если у вас все еще есть проблемы, есть другие способы добиться этого. Если у вас есть столбцы latdeg
и londeg
в отдельном фрейме данных, который выровнен с этим, вы можете добавить их с помощью следующего (где latlondf
- ваш второй фрейм данных, используя .values
для игнорирования индексов):
df['latdeg'] = latlondf['latdeg'].values
df['londeg'] = latlondf['londeg'].values
По умолчанию эти столбцы отображаются справа от вашего кадра данных, но вы можете перенести их слева от кадра, используя df.reindex()
:
df = df.reindex(
columns=["latdeg", "londeg"]
+ [i for i in df.columns if i not in ["latdeg", "londeg"]]
)
Репликация данных. и расширив некоторые:
import pandas as pd
import numpy as np
# replicate the dataframes
df = pd.DataFrame(
[
[20.40, 20.33, 20.30],
[19.17, 19.16, 19.1],
[10.99, 10.97, 10.98],
[10.00, 9.99, 9.99],
],
columns=["2009-01-01 00:00:00", "2009-01-02 00:00:00", "2009-01-03 00:00:00"],
index=[321332106443701, 321332106443703, 321540110205501, 321540110205502],
)
latlondf = pd.DataFrame(
[
[32.225583, -64.736139],
[32.225583, -64.736139],
[32.225583, -64.736139],
[32.225583, -64.736139],
],
columns=["latdeg", "londeg"],
)
df.columns.name = "Date"
df.index.name = "latlon"
# Options 1: insert
df.insert(0, "latdeg", latlondf["latdeg"].values)
df.insert(1, "londeg", latlondf["londeg"].values)
# Option 2 - assign and reindex
df["latdeg"] = latlondf["latdeg"].values
df["londeg"] = latlondf["londeg"].values
df = df.reindex(
columns=["latdeg", "londeg"]
+ [i for i in df.columns if i not in ["latdeg", "londeg"]]
)
# check output
df
Date latdeg londeg 2009-01-01 00:00:00 2009-01-02 00:00:00 2009-01-03 00:00:00
latlon
321332106443701 32.225583 -64.736139 20.40 20.33 20.30
321332106443703 32.225583 -64.736139 19.17 19.16 19.10
321540110205501 32.225583 -64.736139 10.99 10.97 10.98
321540110205502 32.225583 -64.736139 10.00 9.99 9.99