Как разделить один кадр данных на другой, не преобразовав сначала numpy? - PullRequest
1 голос
/ 11 февраля 2020

У меня есть фрейм данных с двумя столбцами, x и y, и несколькими сотнями строк. У меня есть другой фрейм данных только с одной строкой и двумя столбцами, x и y.

Я хочу разделить столбец x большого фрейма данных на значение в x небольшого фрейма данных, а столбец y - ​​на столбец y.

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

Почему я не могу разделить один кадр данных на другой? Что мне не хватает? У меня есть пример игрушки ниже.

import numpy as np
import pandas as pd

df = pd.DataFrame()
r = int(10)
df['x'] = np.arange(0,r)
df['y'] = df['x'] * 2

other_df = pd.DataFrame()
other_df['x'] = [100]
other_df['y'] = [400]

# This doesn't work - I get all nans
new = df / other_df

# this works - it gives me what I want
new2 = df / [100,400]

# this also works
new3 = df / other_df.to_numpy()

Ответы [ 2 ]

2 голосов
/ 11 февраля 2020

Вы можете преобразовать одну строку DataFrame в Series для правильного выравнивания columns, например, выбрав первую строку с помощью DataFrame.iloc:

new = df / other_df.iloc[0]
print (new)
      x      y
0  0.00  0.000
1  0.01  0.005
2  0.02  0.010
3  0.03  0.015
4  0.04  0.020
5  0.05  0.025
6  0.06  0.030
7  0.07  0.035
8  0.08  0.040
9  0.09  0.045
0 голосов
/ 14 февраля 2020

Вы можете использовать numpy.divide() для деления, поскольку numpy обладает замечательным свойством Broadcasting .

new = np.divide(df,other_df)

. Пожалуйста, проверьте эту ссылку , чтобы узнать больше подробности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...