Python и Pandas: применять для нескольких столбцов

Я новичок в python, и мне удалось использовать применение в фрейме данных для создания нового столбца внутри фрейма данных.

X['Geohash']=X[['Lat','Long']].apply (lambda column: geohash.encode(column[0],column[1],precision=8), axis=1)

это вызывает функцию geohash с широтой и долготой для каждой строки и каждого столбца.

Теперь у меня есть два новых фрейма данных: один для широты, а другой для долготы. Каждый фрейм данных имеет двадцать столбцов, и я хочу, чтобы

.apply (lambda column: geohash.encode(column[0],column[1],precision=8), axis=1)

называется двадцать раз.

-Первый раз первый столбец dataframe-Latitude с первым столбцом dataframe-Longitude, затем

-второй раз, второй столбец dataframe-Latitude со вторым столбцом dataframe-Longitude.

Как я могу сделать эту итерацию для каждого столбца и на каждой итерации вызвать

.apply (lambda column: geohash.encode(column[0],column[1],precision=8), axis=1)

Я хочу получить новый фрейм данных с двадцатью столбцами, каждый из которых является результатом функции геохеширования.

Идеи будут оценены.

у вас есть 2 базы данных, каждая со столбцом Latitude и Longtitude?

zero 14.05.2019 09:48

@Alex P, ваши требования сбивают с толку. Если вы упомянете свой фиктивный ввод и ожидаемый результат, будет легко ответить.

Abdur Rehman 14.05.2019 10:05

Я думал об этом. Что мой код не воспроизводим. Есть ли у вас какие-либо предложения о том, как я могу взять большие кадры данных и сделать их в коде, который может создать такой фрейм данных?

Alex P 14.05.2019 10:42

У меня есть два фрейма данных. В одном есть только Широты и двадцать столбцов. Другой имеет только долготы и двадцать столбцов. Двадцать столбцов — это просто разные снимки времени.

Alex P 14.05.2019 10:43
0
4
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете сделать это, создав «пустой» фрейм данных с 20 столбцами, а затем используя df.columns[i] для перебора других фреймов данных — примерно так:

output = pd.DataFrame({i:[] for i in range(20)})

Это создает пустой фрейм данных со всеми нужными столбцами (пронумерованными).

Теперь предположим, что кадры данных долготы и широты называются «lon» и «lat». Нам нужно объединить их в один фрейм данных. Затем:

lonlat = lat.join(lon)
for i in range(len(output.columns)):
    output[output.columns[i]] = lonlat.apply(lambda column: geohash.encode(column[lat.columns[i]], 
                                                            column[lon.columns[i]],
                                                            precision=8), axis=1)

Здорово. Я смог отредактировать ваш код для себя, и он работает именно так, как мне нужно. Большое спасибо. Действительно! К сожалению, я не могу проголосовать за вас.

Alex P 14.05.2019 11:03

Рад, что смог помочь! Поскольку вы задали вопрос, вы можете принять мой ответ, щелкнув звездочку под стрелками «за» / «против».

Jim Eisenberg 14.05.2019 11:47

Да! Я этого не знал!

Alex P 14.05.2019 12:35

Другие вопросы по теме