我想用另一列的值填充一列中的缺失值。熊貓 - 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