分割标签和作者,然后展开到新行。
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
答案 0 :(得分:2)
对所有重复的列值使用DataFrame.set_index
,然后通过DataFrame.stack
进行整形,然后将{{1}的Series.str.split
与expand=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