Home > Mobile >  Adding a value at the end of a column in a multindex column dataframe
Adding a value at the end of a column in a multindex column dataframe

Time:09-24

I have a simple problem that probably has a simple solution but I couldn't found it anywhere. I have the following multindex column Dataframe:

mux = pd.MultiIndex.from_product(['A','B','C'], ['Datetime', 'Str', 'Ret']])
dfr = pd.DataFrame(columns=mux)

  |      A         |        B       |        C       |
  |Datetime|Str|Ret|Datetime|Str|Ret|Datetime|Str|Ret|

I need to add values one by one at the end of a specific subcolumn. For example add one value at the end of column A sub-column Datetime and leave the rest of the row as it is, then add another value to column B sub-column Str and again leave the rest of the values in the same row untouched and so on. So my questions are: Is it possible to target individual locations in this type of Dataframes? How? and also Is it possible to append not a full row but an individual value always at the end after the previous value without knowing where the end is?. Thank you so much for your answers.

CodePudding user response:

IIUC, you can use .loc:

idx = len(dfr)  # get the index of the next row after the last one
dfr.loc[idx, ('A', 'Datetime')] = pd.to_datetime('2021-09-24')
dfr.loc[idx, ('B', 'Str')] = 'Hello'
dfr.loc[idx, ('C', 'Ret')] = 4.3

Output:

>>> dfr
                     A                  B                    C          
              Datetime  Str  Ret Datetime    Str  Ret Datetime  Str  Ret
0  2021-09-24 00:00:00  NaN  NaN      NaN  Hello  NaN      NaN  NaN  4.3
  • Related