【问题标题】:Python Conditional NaN Value Replacement of existing Values in Dataframe数据框中现有值的 Python 条件 NaN 值替换
【发布时间】:2022-01-24 05:14:44
【问题描述】:

我尝试转换从 CSV 加载的 DataFrame 女巫。 在该 CSV 中是具有 NaN / 无值的列。目标是全部替换!

例如在'gh'列第45行(如图所示:Input Dataframe)是缺少值。我喜欢用第 1 行的值替换它,因为 'latitude','longitude', 'time' ,'step','valid_time' 是相等的。所以我喜欢用这些值进行基于条件的替换。但不仅适用于“gh”,还适用于 meanSea、msl、t、u 和 v。

Input Dataframe

我尝试过类似的方法(仅用于“gh”):

for i,row in df.iterrows():
    value = row["gh"]
    if pd.isnull(value):
        for j,rowx in df.iterrows():
            if row["latitude"]==rowx["latitude"] and row["longitude"]==rowx["longitude"] and row["time"]==rowx["time"] and row["step"]==rowx["step"]and row["valid_time"]==rowx["valid_time"]:
                valuex = rowx["gh"] 
                row["gh"]=valuex
                break;
            

My Try

这对于大数据框来说效率很低,所以我需要一个更好的解决方案。

【问题讨论】:

标签: python pandas dataframe


【解决方案1】:

假设所有值都可以在数据集中的某处找到,最简单的方法是按这些列('latitude'、'longitude'、'time'、'step'、'valid_time')对您的 df 进行排序并向前填充您的NaN:

df.sort_values(by=['latitude','longitude', 'time' ,'step','valid_time']).ffill()

但是,如果数据集中的其他地方没有对应的行,这会失败

【讨论】:

    猜你喜欢
    • 2018-11-29
    • 2019-02-12
    • 2017-12-05
    • 2017-04-22
    • 2020-02-26
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多