没有多层的dstack
dstack with no multiple layers
我有以下数据集,其中包含数字结果和代表数字结果标签的几列
outcome tag1 tag2 tag3
340 a b a
123 a a b
23 d c b
54 c a c
我想通过从列值(a、b、c..)和相对结果值创建行来拆分数据集,例如:
tag outcome
a 340
a 123
a 54
b 340
b 124
b 23
c 23
d 54
怎么办?
谢谢!
使用:
df1 = (df.melt('outcome', value_name='tag')
.sort_values('tag')
.drop('variable', axis=1)
.dropna(subset=['tag'])
.drop_duplicates()[['tag','outcome']])
解释:
- 重塑
melt
- 按
sort_values
更改顺序
- 按
drop
删除列
- 通过
dropna
删除可能的缺失值
- 上次删除重复项
drop_duplicates
或者:
df1 = (df.set_index('outcome')
.stack()
.sort_values()
.reset_index(level=1, drop=True)
.reset_index(name='tag')
.drop_duplicates()[['tag','outcome']])
解释:
- 重塑
set_index
with stack
Series
按 sort_values
排序
- Double
reset_index
- 首先删除级别 1,然后创建列形式索引
- 上次删除重复项
drop_duplicates
print (df1)
tag outcome
0 a 340
1 a 123
7 a 54
4 b 340
9 b 123
10 b 23
3 c 54
6 c 23
2 d 23
使用
In [321]: (df.set_index('outcome').unstack()
.reset_index(level=0, drop=True)
.sort_values()
.reset_index(name='tag')
.drop_duplicates())
Out[321]:
outcome tag
0 340 a
1 123 a
3 54 a
5 340 b
6 123 b
7 23 b
8 54 c
9 23 c
11 23 d
我有以下数据集,其中包含数字结果和代表数字结果标签的几列
outcome tag1 tag2 tag3
340 a b a
123 a a b
23 d c b
54 c a c
我想通过从列值(a、b、c..)和相对结果值创建行来拆分数据集,例如:
tag outcome
a 340
a 123
a 54
b 340
b 124
b 23
c 23
d 54
怎么办?
谢谢!
使用:
df1 = (df.melt('outcome', value_name='tag')
.sort_values('tag')
.drop('variable', axis=1)
.dropna(subset=['tag'])
.drop_duplicates()[['tag','outcome']])
解释:
- 重塑
melt
- 按
sort_values
更改顺序
- 按
drop
删除列
- 通过
dropna
删除可能的缺失值
- 上次删除重复项
drop_duplicates
或者:
df1 = (df.set_index('outcome')
.stack()
.sort_values()
.reset_index(level=1, drop=True)
.reset_index(name='tag')
.drop_duplicates()[['tag','outcome']])
解释:
- 重塑
set_index
withstack
Series
按sort_values
排序
- Double
reset_index
- 首先删除级别 1,然后创建列形式索引 - 上次删除重复项
drop_duplicates
print (df1)
tag outcome
0 a 340
1 a 123
7 a 54
4 b 340
9 b 123
10 b 23
3 c 54
6 c 23
2 d 23
使用
In [321]: (df.set_index('outcome').unstack()
.reset_index(level=0, drop=True)
.sort_values()
.reset_index(name='tag')
.drop_duplicates())
Out[321]:
outcome tag
0 340 a
1 123 a
3 54 a
5 340 b
6 123 b
7 23 b
8 54 c
9 23 c
11 23 d