How to Reshape a Pandas DataFrame Using the Melt Function and a Dictionary?

Barbara Streisand
Release: 2024-11-22 07:08:10
Original
879 people have browsed it

How to Reshape a Pandas DataFrame Using the Melt Function and a Dictionary?

Pandas Melt Function: Reshaping Dataframes for Analysis

Question:

Consider a dataframe with multiple columns and a dictionary:

df = pd.DataFrame([[2, 4, 7, 8, 1, 3, 2013], [9, 2, 4, 5, 5, 6, 2014]], columns=['Amy', 'Bob', 'Carl', 'Chris', 'Ben', 'Other', 'Year'])<br>

d = {'A': ['Amy'], 'B': ['Bob', 'Ben'], 'C': ['Carl', 'Chris']}<br>

How do we reshape the dataframe to resemble the following structure, where columns are melted and grouped?

    Group   Name  Year  Value<br> 0      A    Amy  2013      2<br> 1      A    Amy  2014      9<br> 2      B    Bob  2013      4<br> 3      B    Bob  2014      2<br> 4      B    Ben  2013      1<br> 5      B    Ben  2014      5<br> 6      C   Carl  2013      7<br> 7      C   Carl  2014      4<br> 8      C  Chris  2013      8<br> 9      C  Chris  2014      5<br>10  Other         2013      3<br>11  Other         2014      6<br>

Answer:

To reshape the dataframe using the melt function, follow these steps:

  1. Melt the dataframe: Melt the dataframe into a wide format using the melt function. This will convert the columns into rows, with the id_vars parameter used to specify the columns that should remain intact.

    m = pd.melt(df, id_vars=['Year'], var_name='Name')
    Copy after login
  2. Create a mapping dictionary: Reshape the dictionary d to create a mapping between column names and group names.

    d2 = {}
    for k, v in d.items():
        for item in v:
            d2[item] = k
    Copy after login
  3. Add 'Group': Map the newly created dictionary d2 to the 'Name' column to add the 'Group' column.

    m['Group'] = m['Name'].map(d2)
    Copy after login
  4. Move 'Other': Move 'Other' values from the 'Name' column to the 'Group' column.

    mask = m['Name'] == 'Other'
    m.loc[mask, 'Name'] = ''
    m.loc[mask, 'Group'] = 'Other'
    Copy after login

The resulting dataframe will contain the desired flattened structure:

print(m)

    Year   Name  value Group
0   2013    Amy      2      A
1   2014    Amy      9      A
2   2013    Bob      4      B
3   2014    Bob      2      B
4   2013   Carl      7      C
...    ...    ...    ...    ...
7   2014  Chris      5      C
8   2013    Ben      1      B
9   2014    Ben      5      B
10  2013             3  Other
11  2014             6  Other
Copy after login

The above is the detailed content of How to Reshape a Pandas DataFrame Using the Melt Function and a Dictionary?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template