чтение даты из фрейма данных на основе условий в другом фрейме данных - PullRequest
0 голосов
/ 01 июня 2018

У меня есть 2 кадра данных.Мне нужно прочитать значения из одного фрейма данных на основе значений из другого

слова:

words = pd.DataFrame()
words['no'] = [1,2,3,4,5,6,7,8,9]
words['word'] = ['cat', 'in', 'hat', 'the', 'dog', 'in', 'love', '!', '<3']
words

Предложения:

sentences =  pd.DataFrame()
sentences['no'] =[1,2,3]
sentences['start'] = [1, 4, 6]
sentences['stop'] = [3, 5, 9]
sentences

желаемый вывод втекстовый файл:

cat in hat
***
the dog
***
in love ! <3

однако я не могу пройти этот шаг, я попытался запустить следующий код:

для x в передачах: print (words ['word'] [words ['нет']. Между (предложения ['начало'], предложения ['стоп'], включительно = True)

, но я возвращаюсь с этой ошибкой

 File "<ipython-input-16-ae3f5333be66>", line 3
    print(words['word'][words['no'].between(sentences['start'], sentences['stop'], inclusive = True)
                                                                                                    ^
SyntaxError: unexpected EOF while parsing

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

один способ решить эту проблему,

res=pd.DataFrame()
res['s']=sentences.apply(lambda x: ' '.join(words.iloc[(x['start']-1):(x['stop'])]['word']),axis=1)
res.to_csv('a.txt',index=False,header=False,line_terminator='\n***\n')
0 голосов
/ 01 июня 2018

Установите no в качестве индекса для words, а затем выполните итерацию по sentences, используя понимание списка:

v = words.set_index('no')['word']
sentences = [
    ' '.join(v.loc[i:j]) for i, j in zip(sentences['start'], sentences['stop'])
]

Или независимый индекс:

v = words['word'].tolist()
sentences = [
    ' '.join(v[i - 1:j - 1] for i, j in zip(sentences['start'], sentences['stop'])
]

['cat in hat', 'the dog', 'in love ! <3']

Отсюда легко сохранить файл:

with open('file.txt', 'w') as f:
    for sent in sentences:
        f.write(sent + '\n')
        f.write('***\n')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...