To read your data from Excel into Python, you'll want to use the following lines of code:
import pandas as pd
df = pd.read_excel("path_name.xlsx")
This reads in the library most used for tables of data, pandas, and reads in the data from the file into a variable called df
, which stands for dataframe.
Then to transform as appropriate, you can do:
df = pd.melt(df, id_vars="Date").rename(columns={"variable": "Name", "value": "On/Off"})
I'll explain the code so you can learn for yourself how to use it in future. pd.melt
is a way of changing the format of dataframes. Other methods include df.stack
, df.unstack
, and df.pivot
. Frankly, I can never remember which does what, so I just try them all until something gives me what I want the dataframe to be transformed into.
Setting id_vars="Date"
just means that the date column is left alone rather than being transformed, while the other columns (the ones with the people's names) are transformed.
Then I rename the newly transformed columns using .rename({...})
and include a dictionary of the column names I want to replace. This gives me a dataframe that looks like the following:
| Index| Date | Name | On/Off | |-------|-------------|------|--------| | 0 | 1/1/2025 | Bob | 0 | | 1 | 1/2/2025 | Bob | 1 | | 2 | 1/3/2025 | Bob | 1 | | 3 | 1/1/2025 | Joe | 0 | and so on.
I can then write this out to a CSV using:
df.to_csv("new_filepath.csv", index=False)
and that will write out the table to a new CSV without the index column, just as in your example. I hope that all makes sense!