[英]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.