python - Pandas 数据框用索引填充空值

标签 python pandas

我有一个数据框,其中一列我想用索引值填充空值。这样做的最佳方法是什么?

假设我的数据框如下所示:

>>> import numpy as np
>>> import pandas as pd
>>> d=pd.DataFrame(index=['A','B','C'], columns=['Num','Name'], data=[[1,'Andrew'], [2, np.nan], [3, 'Chris']])
>>> print d

  Num    Name
A    1  Andrew
B    2     NaN
C    3   Chris

我可以使用以下代码行来获取我要查找的内容:

d['Name'][d['Name'].isnull()]=d.index

但是,我收到以下警告:“试图在 DataFrame 的切片副本上设置一个值”

我认为最好使用 fillna 或 loc 来执行此操作,但我不知道如何使用其中任何一个来执行此操作。我尝试了以下方法:

>>> d['Name']=d['Name'].fillna(d.index)

>>> d.loc[d['Name'].isnull()]=d.index

关于哪个是最佳选择有什么建议吗?

最佳答案

IMO 你应该使用 fillna ,因为 Index 类型不是您需要传递系列的填充值可接受的数据类型。 Index 有一个 to_series方法:

In [13]:
d=pd.DataFrame(index=['A','B','C'], columns=['Num','Name'], data=[[1,'Andrew'], [2, np.nan], [3, 'Chris']])
d['Name']=d['Name'].fillna(d.index.to_series())
d

Out[13]:
   Num    Name
A    1  Andrew
B    2       B
C    3   Chris

关于python - Pandas 数据框用索引填充空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31930023/

相关文章:

python - 多处理共享变量不更新

python - 为什么python中的最大递归深度是1000?

python - 官方 Django 教程第 1 部分 : RuntimeError: maximum recursion depth exceeded in cmp

python-3.x - 在 For 循环中,使用 bs4,该函数如何返回 df (作为列)并将其插入到最终的巨型 df 中?

python - Pandas 根据独特值进行分组和聚合

python - 对 matplotlib 颜色的颜色代码感到好奇

python nltk 为 wordnet 相似性度量返回奇数结果

python - 如何有条件地替换 pandas 数据框列中的子字符串?

python - 删除 Pandas 中的准重复项

python - 在 Pandas 中按行中的值过滤列