【发布时间】:2021-10-30 13:15:56
【问题描述】:
给定一个数据集如下:
id words tags
0 1 ['Φ', '20mm'] ['xc', 'PER']
1 2 ['Φ', '80mm'] ['xc', 'm']
2 3 ['EVA'] ['nz']
3 4 ['Q345'] ['nz']
df dict 列表格式:
[{'id': 1, 'words': ['Φ', '20mm'], 'tags': ['xc', 'PER']},
{'id': 2, 'words': ['Φ', '80mm'], 'tags': ['xc', 'm']},
{'id': 3, 'words': ['EVA'], 'tags': ['nz']},
{'id': 4, 'words': ['Q345'], 'tags': ['nz']}]
来自words 的元素在tags 列中具有对应的词性标记(POS 标记)。
我希望将dataframe转换成以下格式:
id words tags
0 1 Φ xc
1 1 20mm PER
2 2 Φ xc
3 2 80mm m
4 3 EVA nz
5 4 Q345 nz
如何在 Pandas 中实现这一点?谢谢。
【问题讨论】:
-
如果您共享源代码会更容易:
df.to_dict('records')。同时尝试:explode:->df.explode(['words', 'tags']) -
@sammywemmy,这行不通,explode 只接受标量,它只能分解一列
-
请注意:在我的测试中,链接副本 (
df.set_index(['id']).apply(pd.Series.explode).reset_index()) 的接受答案比此处接受的答案快约 3 倍。 -
如果您使用的是 Pandas 1.3,explode 接受列列表/元组
-
您可以根据需要在索引中添加任意数量的列。
['id', 'col1', 'col2']等