Pandas 将列名从一个数据帧复制到另一个

bal*_*n16 13 python columnname dataframe pandas

假设我们有两个熊猫数据框。第一个没有列名:

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

第二个有:

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

我想要做的是让副本列来自col_names_dfno_col_names_df这样下的数据帧创建:

    col1    col2    col3
0   1       2       3
1   4       5       6
2   7       8       9
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

new_df_with_col_names = pd.DataFrame(data=no_col_names_df, columns=col_names_df.columns)
Run Code Online (Sandbox Code Playgroud)

但不是来自no_col_names_dfI getNaN的值。

jo9*_*o9k 10

就像您使用带有列名的数据帧中的列一样,您可以使用来自数据帧的值而不使用列名:

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
Run Code Online (Sandbox Code Playgroud)

  • 我们彼此间隔几秒发帖。当我开始写答案时,你的答案还没有出现。这里没有恶意。 (2认同)

yat*_*atu 6

最简单的方法是直接指派的列col_names_df到的那些no_col_names_df

no_col_names_df.columns = col_names_df.columns

     col1  col2  col3
0     1     2     3
1     4     5     6
2     7     8     9
Run Code Online (Sandbox Code Playgroud)