pandas.DataFrame.reindex_like#

DataFrame.reindex_like(other, method=None, copy=None, limit=None, tolerance=None)[source] #

Return an object with matching indices as other object.

Conform the object to the same index on all axes. Optional filling logic, placing NaN in locations having no value in the previous index. A new object is produced unless the new index is equivalent to the current one and copy=False.

Parameters:
otherObject of the same data type

Its row and column indices are used to define the new indices of this object.

method{None, ‘backfill’/’bfill’, ‘pad’/’ffill’, ‘nearest’}

Method to use for filling holes in reindexed DataFrame. Please note: this is only applicable to DataFrames/Series with a monotonically increasing/decreasing index.

  • None (default): don’t fill gaps

  • pad / ffill: propagate last valid observation forward to next valid

  • backfill / bfill: use next valid observation to fill gap

  • nearest: use nearest valid observations to fill gap.

copybool, default True

Return a new object, even if the passed indexes are the same.

Note

The copy keyword will change behavior in pandas 3.0. Copy-on-Write will be enabled by default, which means that all methods with a copy keyword will use a lazy copy mechanism to defer the copy and ignore the copy keyword. The copy keyword will be removed in a future version of pandas.

You can already get the future behavior and improvements through enabling copy on write pd.options.mode.copy_on_write = True

limitint, default None

Maximum number of consecutive labels to fill for inexact matches.

toleranceoptional

Maximum distance between original and new labels for inexact matches. The values of the index at the matching locations must satisfy the equation abs(index[indexer] - target) <= tolerance.

Tolerance may be a scalar value, which applies the same tolerance to all values, or list-like, which applies variable tolerance per element. List-like includes list, tuple, array, Series, and must be the same size as the index and its dtype must exactly match the index’s type.

Returns:
Series or DataFrame

Same type as caller, but with changed indices on each axis.

See also

DataFrame.set_index

Set row labels.

DataFrame.reset_index

Remove row labels or move them to new columns.

DataFrame.reindex

Change to new indices or expand indices.

Notes

Same as calling .reindex(index=other.index, columns=other.columns,...).

Examples

>>> df1 = pd.DataFrame([[24.3, 75.7, 'high'],
...  [31, 87.8, 'high'],
...  [22, 71.6, 'medium'],
...  [35, 95, 'medium']],
...  columns=['temp_celsius', 'temp_fahrenheit',
...  'windspeed'],
...  index=pd.date_range(start='2014年02月12日',
...  end='2014年02月15日', freq='D'))
>>> df1
 temp_celsius temp_fahrenheit windspeed
2014年02月12日 24.3 75.7 high
2014年02月13日 31.0 87.8 high
2014年02月14日 22.0 71.6 medium
2014年02月15日 35.0 95.0 medium
>>> df2 = pd.DataFrame([[28, 'low'],
...  [30, 'low'],
...  [35.1, 'medium']],
...  columns=['temp_celsius', 'windspeed'],
...  index=pd.DatetimeIndex(['2014年02月12日', '2014年02月13日',
...  '2014年02月15日']))
>>> df2
 temp_celsius windspeed
2014年02月12日 28.0 low
2014年02月13日 30.0 low
2014年02月15日 35.1 medium
>>> df2.reindex_like(df1)
 temp_celsius temp_fahrenheit windspeed
2014年02月12日 28.0 NaN low
2014年02月13日 30.0 NaN low
2014年02月14日 NaN NaN NaN
2014年02月15日 35.1 NaN medium