熊猫将列名从一个数据框复制到另一个

时间:2019-05-10 15:41:15

标签: python pandas dataframe columnname

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

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

第二个具有:

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

我想要做的是将复制列 names col_names_df复制到no_col_names_df,以便创建以下数据框:

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

我尝试了以下操作:

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

但是我得到no_col_names_df而不是NaN的值。

5 个答案:

答案 0 :(得分:4)

最简单的方法是将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

答案 1 :(得分:1)

如果您遇到问题,则很可能是data参数,请尝试以下操作:

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

输出:

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

答案 2 :(得分:1)

就像您已经使用了具有列名的数据框中的列一样,您可以使用不具有列名的数据框中的值:

fetchUser


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

答案 3 :(得分:1)

此:

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

为您提供所有“ NaN”数据帧,因为您传递了一个数据帧以构造一个新的数据帧并为其分配新的columns。熊猫实质上构造了相同的数据框,并在其上reindexaxis 1。换句话说,该命令等效于执行以下操作:

no_col_names_df.reindex(col_names_df.columns, axis=1)

您需要直接更改no_col_names_df.columns或通过no_col_names_df.values

答案 4 :(得分:0)

我尝试了最简单的方法,并且对我有用;

no_col_names_df.columns = col_names_df.columns