用另一列的值填充一列的 nan 值

Fill nan values from a column with values from another column

我正在处理一个时间序列数据集,我的兴趣列是月份列 (mes)、年份列 (ano)、最低价格 (min) 和模态价格 (mcom)。

从 2013 年开始的某些月份在 min 列中没有任何值,并且在那些月份中想要填充 mcom 列中的值。

我使用以下行查找没有最小值的月份:

dfc.loc[(dfc['ano'] == 2013) & (dfc['mes'] == 1)]

基本上,我想在

时用 'mcom' 列中的值填充 'min' 列
dfc['ano'] == 2013 & dfc['mes'] == 1

我该怎么做?

这是数据帧的头部:

data    dia mes ano wday    prod    und proc    tipo    min mcom    max merc    date    julian
6   02/01/2013  2   1   2013    quarta  Peixe de agua salgada   Kg  RS-SC   Sardinha    NaN 5.28    5.28    Est 2013-01-02 12:00:00 1.416667
14  03/01/2013  3   1   2013    quinta  Peixe de agua salgada   Kg  RS-SC   Sardinha    NaN 5.28    5.28    Est 2013-01-03 12:00:00 2.416667
22  04/01/2013  4   1   2013    sexta   Peixe de agua salgada   Kg  RS-SC   Sardinha    NaN 5.28    5.28    Est 2013-01-04 12:00:00 3.416667
30  07/01/2013  7   1   2013    segunda Peixe de agua salgada   Kg  RS-SC   Sardinha    NaN 5.28    5.28    Est 2013-01-07 12:00:00 6.416667
38  08/01/2013  8   1   2013    nan Peixe de agua salgada   Kg  RS-SC   Sardinha    NaN 5.28    5.28    Est 2013-01-08 12:00:00 7.416667

'tipo'变量,只有'sardinha',变量类型为:

dfc.dtypes
data       object
dia         int64
mes         int64
ano         int64
wday       object
prod       object
und        object
proc       object
tipo       object
min       float64
mcom      float64
max       float64
merc       object
date       object
julian    float64
dtype: object
m = (dfc['ano'] == 2013) & (dfc['mes'] == 1)

dfc.loc[m, 'min'] = dfc.loc[m, 'mcom']
# or
dfc['min'] = dfc['min'].mask(m, df['mcom'])
# or
dfc['min'] = np.where(m, df['mcom'], dfc['min'])