python pandas: how fill date ranges in a multiindex

  • Last Update :
  • Techknowledgy :

you can do:

>>> f = lambda df: df.resample(rule = 'M', how = 'first') >>>
   df.reset_index(level = 0).groupby('vendor').apply(f).drop('vendor', axis = 1)
variable sales
vendor date
a 2014 - 01 - 31 start date 1
2014 - 02 - 28 NaN NaN
2014 - 03 - 31 end date 1
b 2014 - 03 - 31 start date 1
2014 - 04 - 30 NaN NaN
2014 - 05 - 31 NaN NaN
2014 - 06 - 30 NaN NaN
2014 - 07 - 31 end date 1

so, here's your DataFrame:

>>> df
sales date variable
vendor date
a 2014 - 01 - 01 1 start date
2014 - 01 - 03 1 end date
b 2014 - 01 - 03 1 start date
2014 - 01 - 07 1 end date

first, I want to create data for new MultiIndex:

>>> df2 = df.set_index('date variable', append = True).reset_index(level = 'date')['date'] >>>
   df2
vendor date variable
a start date 2014 - 01 - 01
end date 2014 - 01 - 03
b start date 2014 - 01 - 03
end date 2014 - 01 - 07 >>>
   df2 = df2.unstack() >>>
   df2
date variable end date start date
vendor
a 2014 - 01 - 03 2014 - 01 - 01
b 2014 - 01 - 07 2014 - 01 - 03

now, create tuples for new MultiIndex:

>>> tuples = [(x[0], d) for x in df3.iterrows() for d in pd.date_range(x[1]['start date'], x[1]['end date'])] >>>
   tuples[('a', '2014-01-01'), ..., ('b', '2014-01-07)]

Suggestion : 2

Python Pandas: How fill date ranges in a multiindex,How can I clean date ranges in multiple formats using python pandas?,How can I fill resting numerical values in a pandas dataframe column in python and put as the index?,Python pandas dataframes - transforming 2 columns with date ranges - into monthly columns for each month

you can do:

>>> f = lambda df: df.resample(rule = 'M', how = 'first') >>>
   df.reset_index(level = 0).groupby('vendor').apply(f).drop('vendor', axis = 1)
variable sales
vendor date
a 2014 - 01 - 31 start date 1
2014 - 02 - 28 NaN NaN
2014 - 03 - 31 end date 1
b 2014 - 03 - 31 start date 1
2014 - 04 - 30 NaN NaN
2014 - 05 - 31 NaN NaN
2014 - 06 - 30 NaN NaN
2014 - 07 - 31 end date 1

so, here's your DataFrame:

>>> df
sales date variable
vendor date
a 2014 - 01 - 01 1 start date
2014 - 01 - 03 1 end date
b 2014 - 01 - 03 1 start date
2014 - 01 - 07 1 end date

first, I want to create data for new MultiIndex:

>>> df2 = df.set_index('date variable', append = True).reset_index(level = 'date')['date'] >>>
   df2
vendor date variable
a start date 2014 - 01 - 01
end date 2014 - 01 - 03
b start date 2014 - 01 - 03
end date 2014 - 01 - 07 >>>
   df2 = df2.unstack() >>>
   df2
date variable end date start date
vendor
a 2014 - 01 - 03 2014 - 01 - 01
b 2014 - 01 - 07 2014 - 01 - 03

now, create tuples for new MultiIndex:

>>> tuples = [(x[0], d) for x in df3.iterrows() for d in pd.date_range(x[1]['start date'], x[1]['end date'])] >>>
   tuples[('a', '2014-01-01'), ..., ('b', '2014-01-07)]

Suggestion : 3

6 days ago Create individual date_range per group based on the min and max values; Series.explode into rows to have a DataFrame that represents the new index. Create a MultiIndex.from_frame to reindex the DataFrame with. reindex with midx and set the fillvalue=0 , Accessing Data in a MultiIndex DataFrame in Pandas 1. Selecting data via the first level index When it comes to select data on a DataFrame, Pandas loc is one of the top... 2. Selecting data via multi-level index If you want to read London ’s Day weather on 2019–07–01, you can simply do: >>>... 3. ... , Use the new index to reindex the existing data frame. All the possible combinations are now present. The missing values are null (NaN). You can see that the data in the new data frame has been converted from ints to floats. Pandas can't have nulls in an integer column. , 5 days ago Apr 26, 2021  · 1. Selecting data via the first level index. When it comes to select data on a DataFrame, Pandas loc is one of the top favorites. In a previous article, we have introduced the loc and iloc for selecting data in a general (single-index) DataFrame.Accessing data in a MultiIndex DataFrame can be done in a similar way to a single index DataFrame.. We can …


                 variable sales vendor date a 2014 - 01 - 01 start date 1 2014 - 03 - 01 end date 1 b 2014 - 03 - 01 start date 1 2014 - 07 - 01 end date 1

>>> f = lambda df: df.resample(rule = 'M', how = 'first') >>> df.reset_index(level = 0).groupby('vendor').apply(f).drop('vendor', axis = 1) variable sales vendor date a 2014 - 01 - 31 start date 1 2014 - 02 - 28 NaN NaN 2014 - 03 - 31 end date 1 b 2014 - 03 - 31 start date 1 2014 - 04 - 30 NaN NaN 2014 - 05 - 31 NaN NaN 2014 - 06 - 30 NaN NaN 2014 - 07 - 31 end date 1
variablesales vendor datea2014 - 01 - 01 start date 1 2014 - 03 - 01 end date 1 b2014 - 03 - 01 start date 1 2014 - 07 - 01 end date 1
variable sales vendor datea2014 - 01 - 01 start date 1 2014 - 02 - 01 NaN 1 2014 - 03 - 01 end date 1 b2014 - 03 - 01 start date 1 2014 - 04 - 01 NaN 1 2014 - 05 - 01 NaN 1 2014 - 06 - 01 NaN 1 2014 - 07 - 01 end date 1
>>> f = lambda df: df.resample(rule = 'M', how = 'first') >>> df.reset_index(level = 0).groupby('vendor').apply(f).drop('vendor', axis = 1) variable sales vendor date a2014 - 01 - 31 start date1 2014 - 02 - 28 NaN NaN 2014 - 03 - 31 end date1 b2014 - 03 - 31 start date1 2014 - 04 - 30 NaN NaN 2014 - 05 - 31 NaN NaN 2014 - 06 - 30 NaN NaN 2014 - 07 - 31 end date1
>>> df sales date variable vendor date a2014 - 01 - 011 start date 2014 - 01 - 031 end date b2014 - 01 - 031 start date 2014 - 01 - 071 end date

Suggestion : 4

pandas.MultiIndex.names, pandas.MultiIndex.codes , pandas.MultiIndex.names , pandas.MultiIndex.dtypes

>>> arrays = [
      [1, 1, 2, 2],
      ['red', 'blue', 'red', 'blue']
   ] >>>
   pd.MultiIndex.from_arrays(arrays, names = ('number', 'color'))
MultiIndex([(1, 'red'),
      (1, 'blue'),
      (2, 'red'),
      (2, 'blue')
   ],
   names = ['number', 'color'])