切片上的Fillna在其他数据帧中

时间:2019-05-09 10:14:08

标签: pandas slice fillna

我想更改一个在指标列中采用单个值的函数,以填充(0)堆叠数据框的“值”列以与指标的列表一起使用,应将Nan值设置为零。

import pandas as pd
import numpy as np

df = pd.DataFrame({'ISO3': ['Australia', 'Austria', 'Belgium', 'Canada', 'Australia', 'Austria', 'Belgium', 'Canada'], 
                   'Year': [1991, 1991, 1991, 1991, 1991, 1991, 1991, 1991],
                   'Indicator' : ['Disaster Fatalities', 'Disaster Fatalities', 'Disaster Fatalities', 'Disaster Fatalities', 'Oil Reserves', 'Oil Reserves', 'Oil Reserves', 'Oil Reserves' ],
                   'Value' : [np.nan, 5, np.nan, 18, np.nan, np.nan, np.nan, np.nan]
                  })
df.head(8)

礼物:

ISO3    Year    Indicator   Value
0   Australia   1991    Disaster Fatalities NaN
1   Austria 1991    Disaster Fatalities 5.0
2   Belgium 1991    Disaster Fatalities NaN
3   Canada  1991    Disaster Fatalities 18.0
4   Australia   1991    Oil Reserves    NaN
5   Austria 1991    Oil Reserves    NaN
6   Belgium 1991    Oil Reserves    NaN
7   Canada  1991    Oil Reserves    NaN

将单个指标的Nan值设置为零的功能:

def zerofillnaindicator (df, Indicators):
    mask = (df['Indicator'] == Indicators)
    df.loc[mask, 'Value'] = df.loc[mask, 'Value'].fillna(0)
    return df

致电

df2 = zerofillnaindicator (df = df, Indicators = 'Disaster Fatalities')
df2.head(8)

根据需要提供:


ISO3    Year    Indicator   Value
0   Australia   1991    Disaster Fatalities 0.0
1   Austria 1991    Disaster Fatalities 5.0
2   Belgium 1991    Disaster Fatalities 0.0
3   Canada  1991    Disaster Fatalities 18.0
4   Australia   1991    Oil Reserves    NaN
5   Austria 1991    Oil Reserves    NaN
6   Belgium 1991    Oil Reserves    NaN
7   Canada  1991    Oil Reserves    NaN

但是我该如何更改以采用这样的指标列表:

df2 = zerofillnaindicator (df = df, Indicators = ['Disaster Fatalities', 'Oil Reserves'])
df2.head(8)

我尝试用 df.isin(Indicators)替换遮罩的条件,但这在.isin函数上导致“无法使用多维键索引”

def zerofillnaindicator (df, Indicators):
    mask = df.isin(Indicators)
    df.loc[mask, 'Value'] = df.loc[mask, 'Value'].fillna(0)
    return df

1 个答案:

答案 0 :(得分:1)

如果需要使用标量或同一函数中的列表,请使用function oblique_footer_credits() { echo '<a href="' . esc_url( __( 'http://wordpress.org/', 'oblique' ) ) . '" rel="nofollow">'; /* translators: WordPress */ printf( __( 'Proudly powered by %s', 'oblique' ), 'WordPress' ); echo '</a>'; echo '<span class="sep"> | </span>'; /* translators: 1 - Theme author 2 - Theme name */ printf( __( 'Theme: %2$s by %1$s.', 'oblique' ), 'Themeisle', '<a href="http://themeisle.com/themes/oblique/" rel="nofollow">Oblique</a>' ); echo '</div>'; } add_action( 'oblique_footer', 'oblique_footer_credits' ); 将标量转换为一个元素列表:

isinstance
相关问题