Вам нужно только read_csv
:
import pandas as pd
import io
temp=u"""really:1 christensen:1 scariest:1 many_of:1 label:positive
varied_experiences:1 experiences_from:1 island_resident:1 many_and:1 label:positive
scariest:1 many_of:1 label:negative"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_csv(io.StringIO(temp),
sep=r" label:",
header=None,
names=['bag','label'],
engine='python')
print (df)
bag label
0 really:1 christensen:1 scariest:1 many_of:1 positive
1 varied_experiences:1 experiences_from:1 island... positive
2 scariest:1 many_of:1 negative
Более общее решение, которое rsplit
последним пробелом:
import pandas as pd
import io
temp=u"""really:1 christensen:1 scariest:1 many_of:1 label:positive
varied_experiences:1 experiences_from:1 island_resident:1 many_and:1 label:positive
scariest:1 many_of:1 label:negative"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_csv(io.StringIO(temp),
sep=";", #some string which is NOT in all text
header=None,
names=['text'])
print (df)
text
0 really:1 christensen:1 scariest:1 many_of:1 la...
1 varied_experiences:1 experiences_from:1 island...
2 scariest:1 many_of:1 label:negative
df[['bag','label']] = df.text.str.rsplit(expand=True, n=1)
df = df.drop('text', axis=1)
print (df)
bag label
0 really:1 christensen:1 scariest:1 many_of:1 label:positive
1 varied_experiences:1 experiences_from:1 island... label:positive
2 scariest:1 many_of:1 label:negative
Сколько строк имеет выход? '3' или' 10'? – jezrael
@jezrael Спасибо за ответ. Но я немного смущен тем, что вы подразумеваете под «выходом». Вы спрашиваете, сколько строк имеет «метка»? Если тогда все строки имеют метки – user5779223
, см. Ответ с тремя строками. – jezrael