假设我们有两个Pandas数据框,第一个没有列名:
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'])
我想要做的是将列 * 名称 * 从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
的值。
5条答案
按热度按时间91zkwejq1#
就像你使用了数据框中的列和列名一样,你可以使用数据框中的值而不使用列名:
new_df_with_col_names = pd.DataFrame(data=no_col_names_df.values, columns=col_names_df.columns)
kuhbmx9i2#
最简单的方法是直接将
col_names_df
的列分配给no_col_names_df
的列:vngu2lb83#
这一点:
给你所有的'NaN'数据框,因为你传递一个数据框来构造一个新的数据框,并将新的
columns
分配给它。Pandas本质上构造了相同的数据框,并在其上沿着axis 1
执行reindex
。换句话说,该命令相当于执行:您需要直接更改
no_col_names_df.columns
或传递no_col_names_df.values
q9rjltbz4#
如果你得到了nan,那么最有可能的问题是data参数,试试这个:
输出:
mwecs4sa5#
我试过最简单的一个,它是为我工作;
no_col_names_df.columns = col_names_df.columns