Travasaurus
Travasaurus

Reputation: 654

Instead of appending value as a new column on the same row, pandas adds a new column AND new row

What I have below is an example of the type of the type of concatenation that I am trying to do.

df = pd.DataFrame(np.array([1, 2, 3]).reshape((1, 3)), columns = ['col1', 'col2', 'col3'], index = ['a'])
df2 = pd.DataFrame() # already exists elsewhere in code

df2 = df2.append([df, pd.Series(1, name = 'label')])

The result I am hoping for is:

  col1  col2  col3  label
a  1.0  2.0   3.0    1

but I get is

     col1  col2  col3    0
a     1.0  2.0   3.0    NaN
0     NaN  NaN   NaN    1.0

I know that I'm joining these wrong, but I cannot seem to figure out how its done. Any advice?

Upvotes: 1

Views: 48

Answers (1)

Brandon
Brandon

Reputation: 1018

This is because the series you are adding has an incompatible index. The original dataframe has ['a'] as the specified index and there is no index specified in the series. If you want to add a new column without specifying an index, the following will give you what you want:

df = pd.DataFrame(np.array([1, 2, 3]).reshape((1, 3)), columns = ['col1', 'col2', 'col3'], index = ['a'])
df2 = pd.DataFrame() # already exists elsewhere in code
df2 = df2.append([df]) # append the desired dataframe
df2['label'] = 1 # add a new column with the value 1 across all rows
print(df2.to_string())

   col1  col2  col3  label
a     1     2     3      1

Upvotes: 1

Related Questions