我想更改一个在指标列中采用单个值的函数,以填充(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
答案 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