Pandas
keyboard_arrow_down 655 guides
chevron_leftData Manipulation Cookbook
Adding a prefix to column valuesAdding leading zeros to strings of a columnAdding new column using listsAdding padding to a column of stringsBit-wise ORChanging column type to stringConditionally updating values of a DataFrameConverting all object-typed columns to categorical typeConverting column type to dateConverting column type to floatConverting column type to integerConverting K and M to numerical formConverting string categories or labels to numeric valuesEncoding categorical variablesExpanding lists vertically in a DataFrameExpanding strings vertically in a DataFrameExtracting numbers from columnFilling missing value in Index of DataFrameFiltering column values using boolean masksLogical AND operationMaking DataFrame string column lowercaseMapping True and False to 1 and 0 respectivelyMapping values of a DataFrame using a dictionaryModifying a single value in a DataFrameRemoving characters from columnsRemoving comma from column valuesRemoving first n characters from column valuesRemoving last n characters from column valuesRemoving leading substringRemoving trailing substringReplacing infinities with another value in DataFrameReplacing values in a DataFrameRounding valuesSorting categorical columnsUsing previous row to create new columns
check_circle
Mark as learned thumb_up
0
thumb_down
0
chat_bubble_outline
0
Comment auto_stories Bi-column layout
settings
Expanding strings vertically in a DataFrame in Pandas
schedule Aug 12, 2023
Last updated local_offer
Tags Python●Pandas
tocTable of Contents
expand_more Master the mathematics behind data science with 100+ top-tier guides
Start your free 7-days trial now!
Start your free 7-days trial now!
To expand strings vertically in Pandas, use the DataFrame's explode(~)
method.
As an example, consider the following DataFrame:
df = pd.DataFrame({"A":["a,b","b,c"],"B":[4,5]})df
A B0 a,b 41 b,c 5
Solution
To split the strings of column A
by ,
, and then vertically expand the rows:
df["A"] = df["A"].str.split(",")df = df.explode("A")df
A B0 a 40 b 41 b 51 c 5
Explanation
Here, we are first splitting the strings of column A
by ,
using str.split(",")
:
df["A"] = df["A"].str.split(",")df
A B0 [a, b] 41 [b, c] 5
Next, we used the explode(~)
method to let each element of the lists have its own row:
df.explode("A")
A B0 a 40 b 41 b 51 c 5
Supplement - resetting the index
Notice how the resulting DataFrame has duplicate indices [0,0,1,1]
, which is bad practise in Pandas. To reset the index to the default integer index, call reset_index(drop=True)
like so:
df.reset_index(drop=True)
A B0 a 41 b 42 b 53 c 5
Here, the parameter drop=True
is needed - otherwise the current index will become included as a column.
Published by Isshin Inada
Edited by 0 others
Did you find this page useful?
thumb_up
thumb_down
Comment
Citation
Ask a question or leave a feedback...
thumb_up
0
thumb_down
0
chat_bubble_outline
0
settings
Enjoy our search
Hit / to insta-search docs and recipes!