如何使用一列中的值创建多列 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)
。如果您有不同的变量名称,请根据需要进行调整。
数据的当前结构如下:
数据 |
---|
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)
。如果您有不同的变量名称,请根据需要进行调整。