python - Pandas 中的多索引 fillna

标签 python pandas missing-data multi-index

我有一个多索引数据框,我希望回填组内的缺失值。我当前的数据框如下所示:

df = pd.DataFrame({
                'group': ['group_a'] * 7 + ['group_b'] * 3 + ['group_c'] * 2,
                'Date': ["2013-06-11",
                        "2013-07-02",
                        "2013-07-09",
                        "2013-07-30",
                        "2013-08-06",
                        "2013-09-03",
                        "2013-10-01",
                        "2013-07-09",
                        "2013-08-06",
                        "2013-09-03",
                        "2013-07-09",
                        "2013-09-03"],
                 'Value': [np.nan, np.nan, np.nan,  9,  4, 40, 18, np.nan, np.nan, 5, np.nan, 2]})

df.Date = df['Date'].apply(lambda x: pd.to_datetime(x).date())
df = df.set_index(['group', 'Date'])

我正在尝试获取一个数据框来回填组内的缺失值。 像这样:

Group   Date        Value
group_a 2013-06-11      9
        2013-07-02      9
        2013-07-09      9
        2013-07-30      9
        2013-08-06      4
        2013-09-03     40
        2013-10-01     18
group_b 2013-07-09      5
        2013-08-06      5
        2013-09-03      5
group_c 2013-07-09      2
        2013-09-03      2

我尝试使用pd.fillna('Value', inplace=True),但在在副本上设置值时收到警告,我后来发现这与存在有关的多索引。有没有办法让 fillna 适用于多索引行?另外,理想情况下,我能够将 fillna 仅应用于一列,而不是整个数据框。

对此的任何见解都会很棒。

最佳答案

使用groupby(level=0),然后bfillupdate:

df.update(df.groupby(level=0).bfill())
df

注意:update 就地更改 df

enter image description here

其他替代方案

df = df.groupby(level='group').bfill()

df = df.unstack(0).bfill().stack().swaplevel(0, 1).reindex_like(df)

特定列

df.Value = df.groupby(level=0).Value.bfill()

关于python - Pandas 中的多索引 fillna,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38599012/

相关文章:

Python 编程 : how to eval values from dictionary?

python - 如何在 df 中保留 dtype ('o' ) 而不是 bool

python - 相异矩阵中缺失值的多维缩放

python - 基于其他列将函数应用于 Pandas 列

python - 用python数据框中的列表替换python中的缺失值

pandas - DataFrame:使用滚动、均值和移位的移动平均值,同时忽略 NaN

python - 如何从其他列字符串创建新列?

python - 如何从 python 中的 JSON 文件中删除注释行

python - matplotlib 如何知道要在此代码中显示什么?

python - 在 Pandas 数据框中添加可变长度列 Python