如何使用一列中的值创建多列 pandas

how to create multiple columns using values in one column pandas

数据的当前结构如下:

数据
name1
地址 1
url1
第一卷
name2
地址2
url2
第 2 卷
name3
地址 3
url3
第三卷

预期结构:

姓名 地址 url 成交量
name1 地址 1 url1 第一卷
name2 地址2 url2 第 2 卷
name3 地址 3 url3 第三卷

我需要从列中提取数据并根据条件,即如果记录是名称、ID、url 或卷,为每个

创建一个列

此答案假设您提供的值不是真实值:即这些值是有意义的,而不是像字面上那样编号。数据通常没有那么好地表述。

它还假设您总是有一系列重复出现的姓名、地址等,每四行无一例外地重复出现,并且表现良好 df.index 只是每一行的数字计数。

制作索引指定每个元素将在哪一行和哪一列结束。

>>> df['columns'] = df.index % 4
>>> df['rows'] = df.index // 4
>>> df[['rows', 'columns', 'data']]
    rows  columns   data
0      0        0  name1
1      0        1  addr1
2      0        2   url1
3      0        3   vol1
4      1        0  name2
5      1        1  addr2
6      1        2   url2
7      1        3   vol2
8      2        0  name3
9      2        1  addr3
10     2        2   url3
11     2        3   vol3

这将创建一个类似于上面的数据框(我对列进行了排序以更容易地可视化正在发生的事情)。然后解压你的数据。

>>> df.set_index(['rows', 'columns']).unstack()
          data                   
columns      0      1     2     3
rows                             
0        name1  addr1  url1  vol1
1        name2  addr2  url2  vol2
2        name3  addr3  url3  vol3

在此之后,折叠多索引列 df.columns = df.columns.get_level_values(1),然后重命名 df.rename(columns={INT: NAME, INT: NAME, ...}, inplace=True)。如果您有不同的变量名称,请根据需要进行调整。