मेरा कोड -

df=pd.read_csv("file")
l1=[]
l2=[]
for i in range(0,len(df['unions']),len(df['district'])):
    l1.append(' '.join((df['unions'][i], df['district'][i])))
    l2.append(({"entities": [[(ele.start(), ele.end() - 1) for ele in re.finditer(r'\S+', df['unions'][i])] ,df['subdistrict'][i]],}))

TRAIN_DATA=list(zip(l1,l2))
print(TRAIN_DATA)

परिणाम - [('Dhansagar Bagerhat', {'entities': [[(0, 8)], 'Sarankhola']})]

मेरा अपेक्षित आउटपुट - [('Dhansagar Bagerhat', {'entities': [[(0, 8)], 'Sarankhola'],[[(10, 17)], 'AnyLabel']})] मैं सभी पंक्तियों के लिए यह आउटपुट कैसे प्राप्त करूं? मुझे केवल एक पंक्ति के लिए परिणाम मिल रहा है। ऐसा लगता है जैसे मेरा लूप काम नहीं कर रहा है। क्या कोई कृपया मेरी गलती बता सकता है?

मेरी सीएसवी फ़ाइल इस तरह दिखती है। "AnyLabel" एक और कॉलम है। मेरे पास लगभग 500 पंक्तियाँ हैं -

unions        subdistrict   district 
Dhansagar     Sarankhola    Bagerhat 
Daibagnyahati Morrelganj    Bagerhat 
Ramchandrapur Morrelganj    Bagerhat 
Kodalia       Mollahat      Bagerhat
1
bellatrix 5 सितंबर 2021, 10:33

2 जवाब

सबसे बढ़िया उत्तर

str.join का उपयोग करके देखें:

df=pd.read_csv("file")
l1=[]
l2=[]

for idx, row in df.iterrows():
    l1.append(' '.join((row['unions'], row['district'])))
    l2.append(({"entities": [[[ele.start(), ele.end() - 1], ele.group(0)] for ele in re.finditer(r'\S+', ' '.join([row['unions'] ,row['subdistrict']]))]}))
    

TRAIN_DATA=list(zip(l1,l2))
print(TRAIN_DATA)

आउटपुट:

[('Dhansagar Bagerhat', {'entities': [[[0, 8], 'Dhansagar'], [[10, 19], 'Sarankhola']]}), ('Daibagnyahati Bagerhat', {'entities': [[[0, 12], 'Daibagnyahati'], [[14, 23], 'Morrelganj']]}), ('Ramchandrapur Bagerhat', {'entities': [[[0, 12], 'Ramchandrapur'], [[14, 23], 'Morrelganj']]}), ('Kodalia Bagerhat', {'entities': [[[0, 6], 'Kodalia'], [[8, 15], 'Mollahat']]})]
1
U12-Forward 5 सितंबर 2021, 08:08

आप range गलत का उपयोग कर रहे हैं, आप मूल रूप से इसे 0 से len(df['unions']) तक सभी संख्याओं को पुनरावृत्त करने के लिए कह रहे हैं, लेकिन इसे len(df['district']) के चरणों में करने के लिए जो समान लंबाई है। तो आप मूल रूप से इसे केवल पहली पंक्ति में फिर से शुरू करने के लिए कह रहे हैं। आप देख सकते हैं कि पंक्ति संख्याओं को प्रिंट करके:

for i in range(0,len(df['unions']),len(df['district'])):
    print(i)

इसके अलावा, आपको वैसे भी पंक्तियों पर पुनरावृति नहीं करनी चाहिए, इसके बजाय df.iterrows() का उपयोग करें

df=pd.read_csv("file")
l1=[]
l2=[]

for i, row in df.iterrows():
    l1.append(' '.join((row['unions'], row['district'])))
    l2.append(({"entities": [[(ele.start(), ele.end() - 1) for ele in re.finditer(r'\S+', ' '.join([row['unions'] ,row['subdistrict']]))]]}))
1
Ofer Sadan 5 सितंबर 2021, 07:55