Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pandas copy column names from one dataframe to another

Let's say that we have two pandas data frames. The first one hasn't got column names:

no_col_names_df = pd.DataFrame(np.array([[1,2,3], [4,5,6], [7,8,9]]))

The second has:

col_names_df = pd.DataFrame(np.array([[10,2,3], [4,45,6], [7,18,9]]),
                           columns=['col1', 'col2', 'col3'])

What I want to do is to get copy column names from the col_names_df to no_col_names_df so that the following data frame is created:

    col1    col2    col3
0   1       2       3
1   4       5       6
2   7       8       9

I've tried the following:

new_df_with_col_names = pd.DataFrame(data=no_col_names_df, columns=col_names_df.columns)

but instead of values from the no_col_names_df I get NaNs.

like image 992
balkon16 Avatar asked May 10 '19 15:05

balkon16


1 Answers

Just like you have used columns from the dataframe with column names, you can use values from the dataframe without column names:

new_df_with_col_names = pd.DataFrame(data=no_col_names_df.values, columns=col_names_df.columns)


In [4]: new_df_with_col_names = pd.DataFrame(data=no_col_names_df, columns=col_names_df.columns)

In [5]: new_df_with_col_names
Out[5]:
   col1  col2  col3
0   NaN   NaN   NaN
1   NaN   NaN   NaN
2   NaN   NaN   NaN

In [6]: new_df_with_col_names = pd.DataFrame(data=no_col_names_df.values, columns=col_names_df.columns)

In [7]: new_df_with_col_names
Out[7]:
   col1  col2  col3
0     1     2     3
1     4     5     6
2     7     8     9
like image 176
jo9k Avatar answered Oct 11 '22 11:10

jo9k