Разделите значения строки в панде DataFrame на определенный столбец - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть датафрейм, который выглядит так:

                1     2     3     4  Density
Mineral                                     
Quartz       13.4  23.0  23.4  28.3    2.648
Plagioclase   5.2   8.2   8.5  11.7    2.620
K-feldspar    2.3   2.4   2.6   3.1    2.750

Что мне нужно сделать, так это вычислить новые строки на основе условия, заданного для строки:

ЖЕЛАЕМЫЙ ВЫХОД

                 1     2     3     4     Density 
Mineral                                                           
Quartz         13.4  23.0  23.4  28.3    2.648
Plagioclase     5.2   8.2   8.5  11.7    2.620
K-feldspar      2.3   2.4   2.6   3.1    2.750
Quartz_v       5.06  8.69  8.84 10.69    2.648
Plagioclase_v   ...

Так что процесс в основном мне нужен для следующих шагов:

1) Определите новую строку, например, Quartz_v

2) и затем выполните следующий расчет Quartz_v = значение каждого столбца Кварц , деленное на значение Плотность Кварц_v

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

1 Ответ

3 голосов
/ 01 апреля 2019

Используйте

  • DataFrame.div с осью = 0 для выполнения деления,
  • rename для переименования индекса и
  • append для объединениярезультат к оригиналу (вместо него можно использовать pd.concat).

d = df['Density']
result = df.append(df.div(d, axis=0).assign(Density=d).rename(lambda x: x+'_v'))
result

                       1          2          3          4  Density
Mineral                                                           
Quartz         13.400000  23.000000  23.400000  28.300000    2.648
Plagioclase     5.200000   8.200000   8.500000  11.700000    2.620
K-feldspar      2.300000   2.400000   2.600000   3.100000    2.750
Quartz_v        5.060423   8.685801   8.836858  10.687311    2.648
Plagioclase_v   1.984733   3.129771   3.244275   4.465649    2.620
K-feldspar_v    0.836364   0.872727   0.945455   1.127273    2.750
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...