Добавление строки к фреймворку данных, который вычисляет значение с использованием других строк [duplicate]

Для меня работала переустановка модуля mcrypt.

$sudo apt-get install php5-mcrypt
$sudo php5enmod mcrypt
1
задан user308827 1 November 2014 в 03:00
поделиться

2 ответа

Вы можете выбрать строки по значению индекса, используя df.loc:

In [98]: df.loc['Diff'] = df.loc['RECL_LCC'] - df.loc['RECL_PI']

In [99]: df
Out[99]: 
RECL_LCC          1          2          3
RECL_LCC  35.107655  36.015210  28.877135
RECL_PI   36.961519  43.499506  19.538975
Diff      -1.853864  -7.484296   9.338160
3
ответ дан unutbu 22 August 2018 в 05:01
поделиться
  • 1
    благодаря! Я совсем забыл о .loc – user308827 1 November 2014 в 03:19
  • 2
    Что, если вы хотите вычислить это на пару сотен строк? – Kartik 26 October 2015 в 20:26
  • 3
    @Kartik: Нет качественной разницы. Однако обратите внимание, что DataFrames хранит данные в формате на основе столбцов . Поэтому, если столбцы имеют разные dtypes, вам будет лучше строить свой DataFrame в формате, который позволяет вам различать столбцы вместо разницы строк. – unutbu 26 October 2015 в 20:38
  • 4
    @Kartik: Также обратите внимание, что Pandas выравнивает значения на основе индекса. Рассмотрим, например, pd.Series([1,2,3], index=['A','B','C']) - pd.Series([2,1,3], index=['B','A','C']), который возвращает pd.Series([0,0,0], index=['A','B','C']). Это очень полезно иногда, но если ваши данные уже выровнены (т. Е. Две серии имеют одинаковый индекс), вы можете получить лучшую производительность, обрабатывая ваши данные как один большой массив NumPy и выполняя ваши вычисления с помощью NumPy вместо Pandas. Это особенно верно, если вы хотите вычислить разницу между каждой парой строк, а не только двумя. – unutbu 26 October 2015 в 20:50
  • 5
    @unutbu. Благодаря! Но это был ответ, который я искал: stackoverflow.com/questions/23142967/… . Используя shift и сохраните сдвинутые значения в другом столбце. Функция, которую я искал, была shift. В какой-то момент я вспомнил об этом, но забыл детали. – Kartik 26 October 2015 в 21:02

вы можете использовать функцию diff () :

df.set_index('RECT_LCC', inplace=True)
df.diff(-1)


                    1           2         3
RECT_LCC            
RECT_LCC    -1.853864   -7.484296   9.33816
RECL_PI           NaN         NaN       NaN

по умолчанию, она сдвигается на 1 строку. В вашем случае, поскольку вы вычитаете следующую строку вместо предыдущей, вам нужно установить diff (-1)

0
ответ дан Vlad Bezden 22 August 2018 в 05:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: