To reshape a dataset from columns to rows, where each column represents a different date and the desired output requires a "Date" column and "Value" column, use the Pandas melt function.
df.melt(id_vars=["location", "name"], var_name="Date", value_name="Value")
Example:
import pandas as pd df = pd.DataFrame( { "location": ["A", "B"], "name": ["test", "foo"], "Jan-2010": [12, 18], "Feb-2010": [20, 20], "March-2010": [30, 25], } ) result = df.melt(id_vars=["location", "name"], var_name="Date", value_name="Value") print(result)
Output:
location name Date Value 0 A test Jan-2010 12 1 B foo Jan-2010 18 2 A test Feb-2010 20 3 B foo Feb-2010 20 4 A test March-2010 30 5 B foo March-2010 25
df2 = pd.melt(df, id_vars=["location", "name"], var_name="Date", value_name="Value") df2 = df2.sort(["location", "name"]) # Optionally, reset the index # df2 = df2.reset_index(drop=True)
This code will sort the output by "location" and "name" and provide a clean output with no index.
Note: In newer versions of Pandas, use sort_values instead of sort.
The above is the detailed content of How to Transform Pandas DataFrame Columns into Rows with a 'Date' and 'Value' Column?. For more information, please follow other related articles on the PHP Chinese website!