Python 如何覆盖NaN值?

Python 如何覆盖NaN值?,python,pandas,Python,Pandas,我试图用下面的逻辑替换“BTC”符号的NaN值,但无法覆盖列“A”中的NaN值 df['A'].loc['BTC'] = 1 - df['A'].groupby(level=0).sum() 我也尝试过.fillna()和其他一些东西,但都没能成功 df['A'].loc['BTC'] = df['A'].loc['BTC'].fillna(1 - df['A'].groupby(level=0).sum()) 我有以下数据帧: A

我试图用下面的逻辑替换“BTC”符号的NaN值,但无法覆盖列“A”中的NaN值

df['A'].loc['BTC'] = 1 - df['A'].groupby(level=0).sum()
我也尝试过.fillna()和其他一些东西,但都没能成功

df['A'].loc['BTC'] = df['A'].loc['BTC'].fillna(1 - df['A'].groupby(level=0).sum())
我有以下数据帧:

                         A     
    Date     Symbol  

  1/1/2017    BTC       Nan   
              ETH       0.45     
              XRP       0.3     
  1/2/2017    BTC       Nan    
              ETH       0.55     
              XRP       0.2     

使用
transform
替换为过滤方式:

详细信息

print (df.groupby(level=0)['A'].transform('sum'))
Date      Symbol
1/1/2017  BTC       0.75
          ETH       0.75
          XRP       0.75
1/2/2017  BTC       0.75
          ETH       0.75
          XRP       0.75
Name: A, dtype: float64

你能解释一下逻辑是什么吗?在np.whereuser needs
1-sum()中使用你的逻辑,我相信。因此,
(2017年1月1日,BTC)
应为0.25example@jezrael,非常感谢您的解决方案。它对我非常有效。
print (df.groupby(level=0)['A'].transform('sum'))
Date      Symbol
1/1/2017  BTC       0.75
          ETH       0.75
          XRP       0.75
1/2/2017  BTC       0.75
          ETH       0.75
          XRP       0.75
Name: A, dtype: float64