社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

数据操作——Python

anla01 • 3 年前 • 1251 次点击  

以下是我的数据集:

  •     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
 
1251 次点击  
文章 [ 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