通过将列或列的列与另一个列表进行匹配来创建新的数据帧

时间:2017-10-28 09:07:35

标签: python pandas

所以我有一个数据框,如:

|类别|地址|标签|

cat1 addr1't1,t2,t3'

cat2 addr2't4,t1,t3'

等等

我已经在一系列中提取了唯一的标签列表。

我想:

标签|类别|地址

t1 cat1 addr1         cat2 addr2

t2 cat1 addr1

t3 cat1 addr1         cat2 addr2

我很困惑如何在这里使用groupby?还是变换了?

1 个答案:

答案 0 :(得分:1)

您可以使用:

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