Py学习  »  Python

数据操作——Python

anla01 • 3 年前 • 1268 次点击  

以下是我的数据集:

  •     COL_1    COL_2    COL_2   COL_4   COL_4  COL_8    COL_9
        A         col2    col3    col4    col5
        B         col2    col3    col4    col5
        C         col2    col3    col4    col5
    

我需要将成对的列(COL_2、COL_3,然后COL_4、COL_5)移动到COL_8和COL_9,复制第一列(COL_1)的内容,并将列(COL_2、COL_4)的名称以这种方式放入另一列(COL_10):

  •    COL_1  COL_8   COL_9   COL10
       A       col2   col3    COL_2
       B       col2   col3    COL_2
       C       col2   col3    COL_2
       A       col4   col5    COL_4
       B       col4   col5    COL_4
       C       col4   col5    COL_4
    

请注意,初始数据集中的一些列名是相同的。 如何使用Python实现这一点?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132843
 
1268 次点击  
文章 [ 2 ]  |  最新文章 3 年前
richardec
Reply   •   1 楼
richardec    3 年前

这应该是有效的:

part1 = df[['COL_1', 'COL_2']].set_axis([0,1,2], axis=1)
part2 = df[['COL_1', 'COL_4']].set_axis([0,1,2], axis=1)
new_df = pd.concat([part1, part2], ignore_index=True)
new_df[3] = new_df[1]
new_df.columns = ['COL_1', 'COL_8', 'COL_9', 'COL_10']

输出:

>>> new_df
  COL_1 COL_8 COL_9 COL_10
0     A  col2  col3   col2
1     B  col2  col3   col2
2     C  col2  col3   col2
3     A  col4  col5   col4
4     B  col4  col5   col4
5     C  col4  col5   col4
Giulio Mattolin
Reply   •   2 楼
Giulio Mattolin    3 年前

要获得图示结果,可以使用该函数 concat 创建新数据框的列,如下所示:

new_df = pd.DataFrame()

new_df['COL_1'] = pd.concat([df['COL_1'], df['COL_1']])
new_df['COL_8'] = pd.concat([df['COL_2'], df['COL_4']])
new_df['COL_9'] = pd.concat([df['COL_3'], df['COL_5']])
new_df['COL_10'] = pd.concat([pd.DataFrame(np.repeat('COL_2', len(df))), pd.DataFrame(np.repeat('COL_4', len(df)))])
>>> new_df

  COL_1  COL_8   COL_9   COL_10
0     A   col2    col3    COL_2
1     B   col2    col3    COL_2
2     C   col2    col3    COL_2
0     A   col4    col5    COL_4
1     B   col4    col5    COL_4
2     C   col4    col5    COL_4