[英]Explode the list values in dataframe columns
我有一个 dataframe 具有以下值:
sentence_id words labels
3822445 ['a', 'b', 'c', ''] ['B-PER', 'I-PER', 'I-PER', 'I-PER']
3822446 ['d', 'e', ''] ['B-PER', 'I-PER', 'I-PER']
3822447 ['f', 'g', 'h'] ['B-PER', 'I-PER', 'I-PER']
将 output 除外为:
sentence_id words labels
3822445 'a' 'B-PER'
3822445 'b' 'I-PER'
3822445 'c' 'I-PER'
3822445 '' 'I-PER'
3822446 'd' 'B-PER'
3822446 'e' 'I-PER'
3822446 '' 'I-PER'
3822447 'f' 'B-PER'
3822447 'g' 'I-PER'
3822447 'h' 'I-PER'
我努力了:
dataframe.set_index(['sentence_id']).apply(pd.Series.explode).reset_index()
但给出相同的 output 作为输入。 不知道出了什么问题。
如果你想要一个简单的单行,你可以使用explode
with pandas>=0.25.0
df.explode('words').assign(labels=df['labels'].explode())
df.explode(['words','labels'], ignore_index=True)
Output:
sentence_id words labels
0 3822445 a B-PER
1 3822445 b I-PER
2 3822445 c I-PER
3 3822445 I-PER
4 3822446 d B-PER
5 3822446 e I-PER
6 3822446 I-PER
7 3822447 f B-PER
8 3822447 g I-PER
9 3822447 h I-PER
这对我来说很好。 你有什么意想不到的结果?
df = pd.DataFrame({'sentence_id':[3822445, 3822446, 3822447],
'words':[['a', 'b', 'c', ''],
['d', 'e', ''],
['f', 'g','h']],
'labels':[['B-PER', 'I-PER', 'I-PER', 'I-PER'],
['B-PER','I-PER', 'I-PER'],
['B-PER', 'I-PER','I-PER']]})
df.set_index('sentence_id').apply(pd.Series.explode).reset_index()
Output:
sentence_id words labels
0 3822445 a B-PER
1 3822445 b I-PER
2 3822445 c I-PER
3 3822445 I-PER
4 3822446 d B-PER
5 3822446 e I-PER
6 3822446 I-PER
7 3822447 f B-PER
8 3822447 g I-PER
9 3822447 h I-PER
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.