Python 2.7 对数据帧中的行求和返回NAN

Python 2.7 对数据帧中的行求和返回NAN,python-2.7,pandas,numpy,dataframe,nan,Python 2.7,Pandas,Numpy,Dataframe,Nan,我试图获取Pandas数据帧中每行的总和: new_df['cash_change']=new_df.sum(axis=0) 然而,我的结果不断返回NaN 我想这可能与我将我的位置转换为十进制进行乘法有关: pos_to_dec=np.array([security.signals['positions'].values]中d的十进制数(d)] 我必须这样做才能将我的列相乘。然而,我回过头来看: cash\u change[security.symbol]=cash\u change[secur

我试图获取Pandas数据帧中每行的总和:

new_df['cash_change']=new_df.sum(axis=0)

然而,我的结果不断返回
NaN

我想这可能与我将我的位置转换为十进制进行乘法有关:

pos_to_dec=np.array([security.signals['positions'].values]中d的十进制数(d)]

我必须这样做才能将我的列相乘。然而,我回过头来看:

cash\u change[security.symbol]=cash\u change[security.symbol].aType(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
数据帧最终看起来像这样:

                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

对我做错了什么有什么建议吗?或者可能是对每行的列求和的另一种方式?

当您在方法中提供轴=0时,它沿索引执行求和(如果更容易理解,则为垂直方向)。结果,您只得到与数据帧的4列对应的4个计算值。然后,将此结果分配给dataframe的新列。由于它们不共享相同的索引轴来重新索引,因此会得到一系列
NaN
元素

实际上,您需要跨列进行求和(水平方向)

将该行更改为:

new_df['cash_change'] = new_df.sum(axis=1)  # sum row-wise across each column

现在您将得到有限的计算求和值。

当您在方法中提供轴=0时,它将沿索引执行求和(垂直方向,如果更容易理解的话)。结果,您只得到与数据帧的4列对应的4个计算值。然后,将此结果分配给dataframe的新列。由于它们不共享相同的索引轴来重新索引,因此会得到一系列
NaN
元素

new_df['cash_change'] = new_df.sum(axis=1)
实际上,您需要跨列进行求和(水平方向)

将该行更改为:

new_df['cash_change'] = new_df.sum(axis=1)  # sum row-wise across each column

现在您将得到有限的计算求和值。

我建议添加最小可重复性示例-。这里的人通常都愿意帮忙,但我怀疑很多人,所以用户会用你当前的问题玩这个猜谜游戏。我建议添加一个最小的可重复的例子-。这里的人通常都愿意提供帮助,但我怀疑很多用户是否会用你当前的问题玩这个猜谜游戏这是OP最初尝试的,导致出现了
NaNs
。@nickil maveli OP trys axis=0,我能知道这与我发布的答案有什么不同吗?如果你有相关的东西要补充,请编辑您的帖子。您在我打字时发布了答案…当我完成时,您已经发布了…它与您的答案相同。这是OP最初尝试的内容,导致出现了
NaNs
。@nickil maveli OP trys axis=0,请问这与我发布的答案有何不同?如果您有相关的内容要添加到此,请编辑您的帖子。您在我键入时发布了答案…当我完成时,您已经发布了…它与您的相同。谢谢您的帮助!谢谢你的帮助!
new_df['cash_change'] = new_df.sum(axis=1)