熊猫拆分并展开两列

时间:2019-11-13 14:46:14

标签: python pandas

分割标签和作者,然后展开到新行。

df = pd.DataFrame([
        {'name': 'book1', 'tag': 'a b c', 'author': 'a1 a2'},
    ],columns=['name', 'tag', 'author']);
print(df)

    name    tag author
0  book1  a b c  a1 a2

预期:

[out]
    name tag author
0  book1   a     a1
1  book1   b     a2
2  book1   c    NaN

2 个答案:

答案 0 :(得分:2)

对所有重复的列值使用DataFrame.set_index,然后通过DataFrame.stack进行整形,然后将{{1}的Series.str.splitexpand=True一起使用,最后通过{{1 }}与DataFrame

stack

另一种解决方案:

unstack

答案 1 :(得分:0)

对于那些具有足够更新的Python以使用splat解压缩的人

from itertools import zip_longest
import pandas as pd

pd.DataFrame(
    [n + m for *n, t, a in zip(*map(df.get, df))
           for *m,      in zip_longest(*map(str.split, (t, a)))],
    columns=[*df]
)

    name tag author
0  book1   a     a1
1  book1   b     a2
2  book1   c   None