将数据框中的 NaN 值替换为基于其他列的相应值

时间:2021-03-05 16:39:06

标签: python pandas dataframe

我有一个包含音乐流派和流派代码的数据框。现在其中一些类型是 NaN 的值,但确实有类型代码。根据这个流派代码,我想在数据框中查找流派,用对应的流派替换NaN值。

例如

第 1 行: 类型 = NaN 类型代码 = 1

第 2 行: 流派 = 摇滚 类型代码 = 1

我遇到的困难是,如何使这种动态变得动态。我可以像这样进行硬编码:

def findReplaceGenre():
for genre, row in dataframe_combined["genres"].iteritems():
    if (pd.isna(row)):
        dataframe_combined.loc[dataframe_combined["genres_code"] == "1", "genres"] = "Rock"
    else:
        continue

findReplaceGenre()

如果流派为 NaN,这使得所有具有标签 1 流派的流派代码摇滚

现在,数据集包含数百个流派和具有 NaN 值的行。有没有办法让这个动态化,让函数查找流派代码,找到与流派相同的流派代码,然后替换NaN值。因此,到目前为止我有:

def findReplaceGenre():
for genre, row in dataframe_combined["genres"].iteritems():
    if (pd.isna(row)):
        dataframe_combined.loc[dataframe_combined["genres_code"] == dataframe_combined["genres_code"], "genres"] = dataframe_combined["genres"].loc[~dataframe_combined["genres"].isna()].iloc[0]
    else:
        continue

findReplaceGenre()

我想检查流派代码是否相同,然后找到流派中的第一个非 NaN 值。我的推理是遍历行,我假设它在行级别进行检查。但是,它一直为所有 NaN 提供第一个非 NaN 类型结果。

有什么建议吗?

0 个答案:

没有答案