Я пытаюсь взять сумму каждой строки в моей панде Dataframe:Суммирования Ряды в панде Dataframe возвращающейся NAN
new_df['cash_change'] = new_df.sum(axis=0)
Однако мои результаты снова возвращаются NaN
Я думаю, что это, возможно, что-то делать с тем, когда я конвертировать мои позиции в Decimal для умножения:
pos_to_dec = np.array([Decimal(d) for d in security.signals['positions'].values])
Что я должен сделать, чтобы умножить мои столбцы вместе. Я бросил его обратно, однако:
cash_change[security.symbol] = cash_change[security.symbol].astype(float)
Вот полный метод. Его цель состоит в том, чтобы выполнить некоторые колонки умножения для каждого безопасности затем сумму общее количество в конце:
def get_cash_change(self):
"""
Calculate daily cash to be transacted every day. Cash change depends on
the position (either buy or sell) multiplied by the adjusted closing price
of the equity multiplied by the trade amount.
:return:
"""
cash_change = pd.DataFrame(index=self.positions.index)
try:
for security in self.market_on_close_securities:
# First convert all the positions from floating-point to decimals
pos_to_dec = np.array([Decimal(d) for d in security.signals['positions'].values])
cash_change['positions'] = pos_to_dec
cash_change['bars'] = security.bars['adj_close_price'].values
# Perform calculation for cash change
cash_change[security.symbol] = cash_change['positions'] * cash_change['bars'] * self.trade_amount
cash_change[security.symbol] = cash_change[security.symbol].astype(float)
# Clean up for next security
cash_change.drop('positions', axis=1, inplace=True)
cash_change.drop('bars', axis=1, inplace=True)
except InvalidOperation as e :
print("Invalid input : " + str(e))
# Sum each equities change in cash
new_df = cash_change.dropna()
new_df['cash_change'] = new_df.sum(axis=0)
return cash_change
Мой new_df
Dataframe заканчивает тем, что-то вроде этого:
MTD ESS SIG SNA cash_change
price_date
2000-01-04 0.0 0.00 0.00 0.00 NaN
2000-01-05 0.0 0.00 0.00 0.00 NaN
2000-01-06 0.0 0.00 0.00 0.00 NaN
2000-01-07 0.0 0.00 0.00 0.00 NaN
2000-01-10 0.0 0.00 0.00 0.00 NaN
2000-01-11 0.0 0.00 0.00 0.00 NaN
2000-01-12 0.0 0.00 0.00 0.00 NaN
2000-01-13 0.0 0.00 0.00 0.00 NaN
2000-01-14 0.0 0.00 0.00 0.00 NaN
2000-01-18 0.0 0.00 0.00 0.00 NaN
2000-01-19 0.0 0.00 0.00 0.00 NaN
2000-01-20 0.0 0.00 0.00 0.00 NaN
2000-01-21 0.0 0.00 0.00 0.00 NaN
2000-01-24 0.0 1747.83 1446.71 0.00 NaN
2000-01-25 3419.0 0.00 0.00 0.00 NaN
2000-01-26 0.0 0.00 0.00 1660.38 NaN
2000-01-27 0.0 0.00 -1293.27 0.00 NaN
2000-01-28 0.0 0.00 0.00 0.00 NaN
Любые предложения по что я делаю неправильно? Или, возможно, другой способ суммирования столбцов для каждой строки?
Я бы предложил добавить минимальный воспроизводимый пример - http://stackoverflow.com/help/mcve. Люди здесь, как правило, готовы помочь, но я сомневаюсь, что многие пользователи SO будут играть в эту игру угадывания с вашим текущим вопросом. –