所以我有一个数据框,如:
|类别|地址|标签|
cat1 addr1't1,t2,t3'
cat2 addr2't4,t1,t3'
等等
我已经在一系列中提取了唯一的标签列表。
我想:
标签|类别|地址
t1 cat1 addr1 cat2 addr2
t2 cat1 addr1
t3 cat1 addr1 cat2 addr2
我很困惑如何在这里使用groupby
?还是变换了?
答案 0 :(得分:1)
您可以使用:
set_index
所有列都没有tag
strip
尾随'
split
值为DataFrame
stack
MultiIndex
到reset_index
reindex
sort_values
列tags
df = (df.set_index(['category','address'])['tags']
.str.strip("'")
.str.split(', ', expand=True)
.stack()
.reset_index(level=2, drop=True)
.reset_index(name='tags')
.reindex_axis(['tags','category','address'], axis=1)
.sort_values('tags'))
print (df)
tags category address
0 t1 cat1 addr1
4 t1 cat2 adddr2
1 t2 cat1 addr1
2 t3 cat1 addr1
5 t3 cat2 adddr2
3 t4 cat2 adddr2