id,node_id,number,state,locked,title,user,body,created_at,updated_at,closed_at,merged_at,merge_commit_sha,assignee,milestone,draft,head,base,author_association,auto_merge,repo,url,merged_by 31399492,MDExOlB1bGxSZXF1ZXN0MzEzOTk0OTI=,378,closed,0,"ENH: fillna method for Dataset, DataArray and GroupBy objects",1217238,"This is a new method for Dataset, DataArray and GroupBy objects. For the most part, it follows standard broadcasting and alignment rules for binary operations. ## Example usage Setup: ``` In [1]: import xray In [2]: import pandas as pd In [3]: import numpy as np In [4]: array = xray.DataArray(np.arange(75.0), [('time', pd.date_range('2000-01-01', periods=75, freq='5D'))]) In [5]: array[::3] = np.nan In [6]: array Out[6]: array([ nan, 1., 2., nan, 4., 5., nan, 7., 8., nan, 10., 11., nan, 13., 14., nan, 16., 17., nan, 19., 20., nan, 22., 23., nan, 25., 26., nan, 28., 29., nan, 31., 32., nan, 34., 35., nan, 37., 38., nan, 40., 41., nan, 43., 44., nan, 46., 47., nan, 49., 50., nan, 52., 53., nan, 55., 56., nan, 58., 59., nan, 61., 62., nan, 64., 65., nan, 67., 68., nan, 70., 71., nan, 73., 74.]) Coordinates: * time (time) datetime64[ns] 2000-01-01 2000-01-06 2000-01-11 2000-01-16 ... ``` Simple example: ``` In [7]: array.fillna(0) Out[7]: array([ 0., 1., 2., 0., 4., 5., 0., 7., 8., 0., 10., 11., 0., 13., 14., 0., 16., 17., 0., 19., 20., 0., 22., 23., 0., 25., 26., 0., 28., 29., 0., 31., 32., 0., 34., 35., 0., 37., 38., 0., 40., 41., 0., 43., 44., 0., 46., 47., 0., 49., 50., 0., 52., 53., 0., 55., 56., 0., 58., 59., 0., 61., 62., 0., 64., 65., 0., 67., 68., 0., 70., 71., 0., 73., 74.]) Coordinates: * time (time) datetime64[ns] 2000-01-01 2000-01-06 2000-01-11 2000-01-16 ... ``` Fill missing values with average for that month: ``` In [8]: g = array.groupby('time.month') In [9]: g.fillna(g.mean('time')) Out[9]: array([ 17.2, 1. , 2. , 17.2, 4. , 5. , 17.2, 7. , 8. , 9. , 10. , 11. , 15. , 13. , 14. , 15. , 16. , 17. , 15. , 19. , 20. , 21. , 22. , 23. , 21. , 25. , 26. , 27. , 28. , 29. , 27. , 31. , 32. , 33. , 34. , 35. , 33. , 37. , 38. , 39. , 40. , 41. , 39. , 43. , 44. , 45. , 46. , 47. , 45. , 49. , 50. , 51. , 52. , 53. , 51. , 55. , 56. , 57. , 58. , 59. , 57. , 61. , 62. , 63. , 64. , 65. , 63. , 67. , 68. , 69.8, 70. , 71. , 69.8, 73. , 74. ]) Coordinates: * time (time) datetime64[ns] 2000-01-01 2000-01-06 2000-01-11 2000-01-16 ... month (time) int32 1 1 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 5 5 5 5 5 5 6 6 6 ... ``` CC @nicolasfauchereau ",2015-03-18T04:16:29Z,2015-03-20T23:00:42Z,2015-03-20T23:00:41Z,2015-03-20T23:00:41Z,2369df3199638ad665539523b5ff1de89c247bf5,,1028398,0,179b0b65c86400069ec25247a7c09d623966e6f6,aaf9067d794a655e52c7186ef9e1c3388573bde6,MEMBER,,13221727,https://github.com/pydata/xarray/pull/378, 31706895,MDExOlB1bGxSZXF1ZXN0MzE3MDY4OTU=,380,closed,0,ENH: Add Dataset.assign and .assign_coords,1217238,"Fixes #314 Based off the new pandas method of the same name. An example: ``` In [3]: ds = xray.Dataset({'y': ('x', [1, 2, 3])}) In [4]: ds.assign(z = lambda x: x.y ** 2) Out[4]: Dimensions: (x: 3) Coordinates: * x (x) int64 0 1 2 Data variables: y (x) int64 1 2 3 z (x) int64 1 4 9 ``` ",2015-03-23T06:04:13Z,2015-03-23T18:42:45Z,2015-03-23T18:42:43Z,2015-03-23T18:42:43Z,1766cfc428d024db2038a5ba470a043a91218652,,1028398,0,d7271cdcbbed3c6dba9136f2b91451e455f0fcfc,4798741a22cf24a1f132865c18e1f2320f2bc855,MEMBER,,13221727,https://github.com/pydata/xarray/pull/380,