数据框中现有值的 Python 条件 NaN 值替换
Posted
技术标签:
【中文标题】数据框中现有值的 Python 条件 NaN 值替换【英文标题】:Python Conditional NaN Value Replacement of existing Values in Dataframe 【发布时间】: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
这对于大数据框来说效率很低,所以我需要一个更好的解决方案。
【问题讨论】:
欢迎来到 ***。请花时间阅读how to provide a great pandas example 上的这篇文章以及如何提供minimal, complete, and verifiable example 并相应地修改您的问题。 how to ask a good question 上的这些提示也可能有用。 【参考方案1】:假设所有值都可以在数据集中的某处找到,最简单的方法是按这些列('latitude'、'longitude'、'time'、'step'、'valid_time')对您的 df 进行排序并向前填充您的NaN:
df.sort_values(by=['latitude','longitude', 'time' ,'step','valid_time']).ffill()
但是,如果数据集中的其他地方没有对应的行,这会失败。
【讨论】:
以上是关于数据框中现有值的 Python 条件 NaN 值替换的主要内容,如果未能解决你的问题,请参考以下文章