Используйте заголовок столбца и значения индекса для работы - PullRequest
0 голосов
/ 04 декабря 2018

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

Кадр 1

Lat          32.063102  32.063194    ...      32.124676  32.124769
Lon                                  ...                          
-100.214676    617.143    617.167    ...        681.024    680.839
-100.214583    617.316    617.331    ...        680.916    680.730
-100.214491    617.495    617.497    ...        680.802    680.609
-100.214398    617.673    617.679    ...        680.690    680.499
-100.214306    617.862    617.862    ...        680.589    680.401

Кадр 2

Lat          32.063194  32.063287    ...      32.124769  0.000000 
Lon                                  ...                          
-100.214676    617.167    617.175    ...        680.839          0
-100.214583    617.331    617.337    ...        680.730          0
-100.214491    617.497    617.505    ...        680.609          0
-100.214398    617.679    617.687    ...        680.499          0
-100.214306    617.862    617.867    ...        680.401          0

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

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

Любая помощь приветствуется, спасибо.

1 Ответ

0 голосов
/ 04 декабря 2018

Вы хотите иметь возможность выполнять вычисления по общим индексам столбцов (как вы объяснили в своем ответе на мой комментарий).Это добавляет дополнительную трудность, так как стандартное поведение для вычислений с DataFrames (то есть df1 - df2 или около того) должно соответствовать индексам строки и столбца.В вашем случае это приведет к появлению NaN и бесполезным результатам.

Следовательно, вам придется заменить индексы столбцов на общие.Однако, если вы поместите исходные индексы столбцов в DataFrames той же формы, что и исходные, вы все равно сможете использовать их в вычислениях.

Пример:

import pandas as pd
import numpy as np

"""generate example data"""
df1 = pd.DataFrame(columns=[32.063102, 32.063194])
df1.loc[-100.214676] = [617.143, 617.167]
df1.loc[-100.214583] = [617.316, 617.331]
df1.loc[-100.214491] = [617.495, 617.497]

df2 = pd.DataFrame(columns=[32.063194, 0])
df2.loc[-100.214676] = [617.167, 0]
df2.loc[-100.214583] = [617.331, 0]
df2.loc[-100.214491] = [617.497, 0]

"""generate auxiliary dataframes with original column indices"""
df1i = pd.DataFrame()
df1i = df1i.append([df1.columns]*len(df1.index))
df1i.index = df1.index

df2i = pd.DataFrame()
df2i = df2i.append([df2.columns]*len(df2.index))
df2i.index = df2.index

"""replace column indices by generic ones to allow the computation by generic column index"""
df1.columns = np.arange(len(df1.columns))
df2.columns = np.arange(len(df2.columns))

"""do the computation"""
df3 = (df1 - df2) / (df1i - df2i)
print(df3)
...