Вычитание между двумя dfs приводит к значениям NAN - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть numpy.ndarray с 17520 строками и 1000 столбцами.np.ndarray имеет только два значения [0,0.05].Я хотел изменить ячейки, которые имеют значение 0,05 для случайного выбора между 0 и 0,05.Чтобы сделать это, я использовал следующие функции в соответствии с рекомендациями поста Случайный выбор конкретных значений DF

import pandas as pd
df = pd.DataFrame(df)    
df.update(np.random.choice([0, 0.05], size=df.shape), filter_func=lambda x: x==0.05)

Это решение сработало, однако у меня есть еще один pandas.DataFrameobject, df1, и мне нужно создать дополнительный объект dataframe.Новый фрейм данных df_new является результатом различия этих двух фреймов данных.Я использую простую операцию:

df_new = df1 - df

Тем не менее, результаты df_new представляют собой фрейм данных с различными измерениями (17520 строк с 2000 столбцами) и значениями NAN.

Делаете ли выесть идеи, почему это происходит?

Спасибо

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Не уверен, где ваша проблема, так как вы не предоставляете подробную информацию о том, как вы строите свои DataFrames.В любом случае вам не обязательно использовать DataFrames для этого: NumPy, безусловно, способен делать то, что вам нужно.Вот пример кода, который вы можете использовать:

import numpy as np

# Randomly create the initial arrays, just to prove the code is OK
df1 = np.random.choice([0.0, 0.05], size=(17520,1000))
df2 = np.random.choice([0.0, 0.05], size=(17520,1000))

# Modify them
w1 = np.where(df1 == 0.05)
w2 = np.where(df2 == 0.05)
df1[w1] = np.random.choice([0.0, 0.05], size=len(w1[0]))
df2[w2] = np.random.choice([0.0, 0.05], size=len(w2[0]))

df_new = df1 - df2
0 голосов
/ 19 февраля 2019

Столбцы df и df1 не совпадают.

Между прочим, в отличие от update, работают также следующие:

df[df == 0.05] = np.random.choice([0., 0.05], size=df.shape)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...