首页 > 解决方案 > 用 Pandas 数据框中的唯一引用替换 NaN

问题描述

我有一个缺少唯一引用的数据框,我想在数据集中为这些生成唯一引用。我想我会为此使用索引/行值,因为它是一个增量数字,但我只需要任何改变的数字。

到目前为止,我已经设法创建了一个列来获取索引值(当然我可能不必这样做,但这是我最接近让它工作的):

# Create column with the index values so they can be used to create unique refs for missing planning references
ah_df['Index Values'] = ah_df.index.values

然后我在尝试替换 NaN 时尝试引用它,为我的每个新引用提供前缀“Unknown Ref”:

# Creates unique references to replace the blanks
ah_df.loc[ah_df["Planning Reference"].isnull(),'Planning Reference'] = "Unknown Ref" + str(ah_df['Index Values'])

就它给我一些东西而言,这个“有效” ,但索引位并没有给我预期的增量数字。相反,我得到了这个:

“未知 Ref0 0\n1 1\n2 2。”

我究竟做错了什么?

谢谢 :)

标签: pythonpandasindexing

解决方案


要转换为字符串,请使用Series.astype

ah_df.loc[ah_df["Planning Reference"].isnull(),'Planning Reference'] = "Unknown Ref" + ah_df['Index Values'].astype(str)

或者不需要新列,请使用Index.astype

ah_df.loc[ah_df["Planning Reference"].isnull(),'Planning Reference'] = "Unknown Ref" + ah_df.index.astype(str)

0如果只需要NaNs 的计数器:

m = ah_df["Planning Reference"].isnull()
ah_df.loc[m,'Planning Reference'] = [f"Unknown Ref{i}" for i in range(m.sum)]

推荐阅读