Home > Software design >  how to combine everything in a pandas dataframe into another dataframe
how to combine everything in a pandas dataframe into another dataframe

Time:11-09

I have a dataframe with information, where the rows are not related to eachother:

   Fruits  Vegetables  Protein
1  Apple   Spinach     Beef
2  Banana  Cucumber    Chicken
3  Pear    Carrot      Pork

I essentially just want to create a pandas series with all of that information, I want it to look like this:

   All Foods
1  Apple 
2  Banana   
3  Pear
4  Spinach
5  Cucumber 
6  Carrot
7  Beef
8  Chicken
9  Pork

How can I do this in pandas?

CodePudding user response:

Dump into numpy and create a new dataframe:

out = df.to_numpy().ravel(order='F')
pd.DataFrame({'All Foods' : out})
  All Foods
0     Apple
1    Banana
2      Pear
3   Spinach
4  Cucumber
5    Carrot
6      Beef
7   Chicken
8      Pork

CodePudding user response:

Just pd.concat them together (and reset the index).

all_foods = pd.concat([foods[col] for col in foods.columns])

CodePudding user response:

You can unstack the dataframe to get the values and then create a df/series:

df = pd.DataFrame({'Fruits':['Apple','Banana', 'Pear'], 'Vegetables':['Spinach', 'Carrot', 'Cucumber'], 'Protein':['Beef', 'Chicken', 'Pork']})

pd.DataFrame({'All Foods' : df.unstack().values})

CodePudding user response:

This should help:

import pandas as pd

# Loading file with fruits, vegetables and protein
dataset = pd.read_csv('/fruit.csv')

# This is where you should apply your code
# Unpivoting (creating one column out of 3 columns)
df_unpivot = pd.melt(dataset, value_vars=['Fruits', 'Vegetables', 'Protein'])
# Renaming column from value to All Foods
df_finalized = df_unpivot.rename(columns={'value': 'All Foods'})
# Printing out "All Foods" column
print(df_finalized["All Foods"])
  • Related