我想用另一列的值填充一列中的缺失值。熊猫 - FillNa与另一列
我读过循环遍历每行将是非常糟糕的做法,并且最好是一次性完成所有事情,但我无法找到如何使用fillna
方法来完成此操作。
数据之前
Day Cat1 Cat2
1 cat mouse
2 dog elephant
3 cat giraf
4 NaN ant
数据后
Day Cat1 Cat2
1 cat mouse
2 dog elephant
3 cat giraf
4 ant ant
我想用另一列的值填充一列中的缺失值。熊猫 - FillNa与另一列
我读过循环遍历每行将是非常糟糕的做法,并且最好是一次性完成所有事情,但我无法找到如何使用fillna
方法来完成此操作。
数据之前
Day Cat1 Cat2
1 cat mouse
2 dog elephant
3 cat giraf
4 NaN ant
数据后
Day Cat1 Cat2
1 cat mouse
2 dog elephant
3 cat giraf
4 ant ant
您可以提供此列fillna
(见docs),它将使用匹配的索引这些值来填充:
In [17]: df['Cat1'].fillna(df['Cat2'])
Out[17]:
0 cat
1 dog
2 cat
3 ant
Name: Cat1, dtype: object
你可以做
df.Cat1 = np.where(df.Cat1.isnull(), df.Cat2, df.Cat1)
在RHS整体结构使用the ternary pattern from the pandas
cookbook(这是值得的阅读在任何情况下) 。这是一个矢量版本a? b: c
。
不我用这个问题的解决方案,但非常有趣的模式!谢谢! – xav
只需使用value
参数,而不是method
:
In [20]: df
Out[20]:
Cat1 Cat2 Day
0 cat mouse 1
1 dog elephant 2
2 cat giraf 3
3 NaN ant 4
In [21]: df.Cat1 = df.Cat1.fillna(value=df.Cat2)
In [22]: df
Out[22]:
Cat1 Cat2 Day
0 cat mouse 1
1 dog elephant 2
2 cat giraf 3
3 ant ant 4
感谢您的回答!使用价值而不是joris描述的方法会改变什么? – xav
@xav'value'是第一个参数,所以joris实际上在做同样的事情。正如他所说,请参阅[文档](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.fillna.html)。 – chrisaycock
是的,文档字符串有点误导,因为'方法'首先在那里列出。 – joris
不错!我不知道''fillna''需要一个系列。 –
谢谢!我认为这个系列必须是NA值的确切数量。 – xav