0 votes
1 view
in Machine Learning by (15.7k points)

I have some data I'm trying to organize into a DataFrame in Pandas. I was trying to make each row a Series and append it to the DataFrame. I found a way to do it by appending the Series to an empty  list and then converting the list of Series to a DataFrame

DF = DataFrame([series1,series2],columns=series1.index)

This list to DataFrame step seems to be excessive. I've checked out a few examples on here but none of the Series preserved the Index labels from the Series to use them as column labels.

My long way where columns are id_names and rows are type_names: enter image description here

Is it possible to append Series to rows of DataFrame without making a list first?

#!/usr/bin/python

DF = DataFrame()

for sample,data in D_sample_data.items():

    SR_row = pd.Series(data.D_key_value)

    DF.append(SR_row)

DF.head()

TypeError: Can only append a Series if ignore_index=True or if the Series has a name

Then I tried

DF = DataFrame()

for sample,data in D_sample_data.items():

    SR_row = pd.Series(data.D_key_value,name=sample)

    DF.append(SR_row)

DF.head()

Empty DataFrame

Tried Insert a row to pandas dataframe Still getting an empty dataframe :/

I am trying to get the Series to be the rows, where the index of the Series becomes the column labels of the DataFrame

1 Answer

0 votes
by (33.2k points)

You can simply add pandas.Series class into the pandas.DataFrame with ignore_index = True argument to DataFrame.append(). 

For Example:

DF = DataFrame()

for sample,data in D_sample_data.items():

    SR_row = pd.Series(data.D_key_value)

    DF = DF.append(SR_row,ignore_index=True)


 

Code:

In [1]: import pandas as pd

In [2]: df = pd.DataFrame([[1,2],[3,4]],columns=['A','B'])

In [3]: df

Out[3]:

   A  B

0  1 2

1  3 4

In [5]: s = pd.Series([5,6],index=['A','B'])

In [6]: s

Out[6]:

A    5

B    6

dtype: int64

In [36]: df.append(s,ignore_index=True)

Out[36]:

   A  B

0  1 2

1  3 4

2  5 6
 

In your code, DataFrame.append() is not in place, it returns the appended dataframe, you would need to assign it back to your original dataframe for it to work. Example -

For example:

DF = DF.append(SR_row,ignore_index=True)

If you want to preserve the labels, you can simply assign the appended DataFrame back to DF. 

DF = DataFrame()

for sample,data in D_sample_data.items():

    SR_row = pd.Series(data.D_key_value,name=sample)

    DF = DF.append(SR_row)

DF.head()

Hope this answer helps.

Welcome to Intellipaat Community. Get your technical queries answered by top developers !


Categories

...