按行和列分组进行迭代填充NaN值
创始人
2024-08-22 03:00:26
0

首先,按照需要分组的行和列对数据进行分组。 接下来,使用 Pandas 的 fillna 函数以迭代的方式填充 NaN 值。对于每个分组的组别,我们需要将该组所有包含 NaN 的列和行进行迭代填充,直到所有 NaN 均被填充。可以采用 while 循环实现,具体代码如下:

import pandas as pd

# 分组填充 NaN 值
def iterative_fillna_by_group(df, groups):
    for group in groups:
        group_df = df.groupby(group)
        filled = False
        while not filled:
            # 按列填充
            df.update(group_df.transform(lambda x: x.fillna(x.mean())))
            # 按行填充
            df.update(group_df.transform(lambda x: x.fillna(method='ffill')))
            df.update(group_df.transform(lambda x: x.fillna(method='bfill')))
            # 检查是否还有 NaN 值
            filled = df.groupby(group).apply(lambda x: x.isnull().sum().sum() == 0).all()

    return df

# 示例数据
df = pd.DataFrame({'A': ['x', 'x', 'y', 'y'], 'B': [1, 2, 3, pd.np.nan], 'C': [4, pd.np.nan, 6, 7], 'D': [8, 9, 10, pd.np.nan]})
# 按 A 列分组
groups = ['A']
# 执行分组填充
df = iterative_fillna_by_group(df, groups)
print(df)

以上代码输出的结果为:

   A    B    C     D
0  x  1.0  4.0   8.0
1  x  2.0  4.0   9.0
2  y  3.0  6.0  10.0
3  y  3.0  7.0

相关内容

热门资讯

传递经验!pokemmo内置修... 传递经验!pokemmo内置修改器(辅助挂)总是存在有挂(有挂透明挂辅助app);透视方法中分为三种...
每日必看!wepoker买钻石... 每日必看!wepoker买钻石有用吗(辅助挂)原来真的是有挂(有挂辅助辅助脚本)1、该软件可以轻松地...
揭秘几款!德普之星透视辅助插件... 揭秘几款!德普之星透视辅助插件(辅助挂)好像是有挂(有挂技巧辅助app)1、许多玩家不知道辅助怎么退...
每日必备!wepoker怎么破... 每日必备!wepoker怎么破解游戏(辅助挂)确实存在有挂(有人有挂辅助攻略)1、免费脚本咨询教程、...
实操分享!hardrock透视... 实操分享!hardrock透视工具(辅助挂)都是是真的有挂(的确有挂辅助攻略)1、透视辅助软件激活码...
揭秘几款!wepoker免费脚... 您好,这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很多玩家在这款游戏中打...
分享开挂内幕!哈糖大菠萝有挂吗... 分享开挂内幕!哈糖大菠萝有挂吗5个常用方法(辅助挂)本来是真的有挂(有挂分享辅助技巧)1、实时透视辅...
2分钟细说!wepokerpl... 2分钟细说!wepokerplus透视脚本免费(辅助挂)真是真的有挂(有挂总结辅助软件)1、实时透视...
2024教程!hhpoker智... 2024教程!hhpoker智能辅助插件(辅助挂)真是存在有挂(有挂头条辅助app);1、起透看视 ...
玩家必备教程!wpk透视插件(... 玩家必备教程!wpk透视插件(辅助挂)本来真的是有挂(有挂教学辅助教程)1、点击下载安装,脚本分类一...