Pandas 数据框使用索引填充空值

10

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

假设我的数据框长这样:

>>> 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

然而,我收到了以下警告:“正在尝试为数据帧的切片副本设置值”

我想最好还是使用fillna或loc来完成此操作,但我无法弄清楚如何使用它们。 我尝试了以下方法:

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

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

有什么建议,哪个选项最好?

2个回答

13

在我看来,你应该使用fillna函数,因为Index类型不是可接受的数据类型,你需要传递一个系列作为填充值。可以使用Indexto_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

5

在这种情况下,我会像这样使用.loc

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接