Прочитайте каждую строку в row_python

avatar
Isa
8 августа 2021 в 17:28
47
2
0

У меня есть df, где "элементы" столбца выглядят так: enter image description here

Как я могу разделить каждое слово, используя это как разделитель "|" затем отправить каждое слово как ключ, избегая дубликатов? Я использовал это, но оно не работает:

    for row in df.elements.itertuples():
       for l in row.elements.split("|"):
           list_elem.send_keys(l)
Источник
MDR
8 августа 2021 в 17:44
0

Пожалуйста, не используйте изображения для данных. Казалось бы, проще скопировать и вставить текст, который у вас есть на экране, в вопрос, чем делать скриншот текста.

Isa
8 августа 2021 в 18:09
0

@MDR Я действительно скопировал и вставил, но отображается как изображение, я не использовал снимок экрана.

MDR
8 августа 2021 в 19:08
0

В любом случае он по-прежнему отображается как изображение, поэтому вы не должны просто пожимать плечами и оставлять его. Скопируйте из источника еще раз, вставьте в обычный текстовый редактор, скопируйте его и затем вставьте в вопрос. Кроме того, после прочтения вашего комментария к предложенному ответу вам необходимо подробно объяснить, что означает «отправлять каждое слово как ключ» (может быть неочевидным, если вы говорите о методе Selenium send_keys() или нет). Если вы хотите получить хороший ответ, вы должны приложить усилия, чтобы объяснить проблему.

Isa
8 августа 2021 в 19:18
0

@MDR спасибо, используя базовый текстовый редактор перед вставкой, это действительно хорошее решение, с этого момента так и будет. Да, я имею в виду метод send_keys() селена, обновлю вопрос.

MDR
8 августа 2021 в 19:23
0

Вы можете использовать этот текст: {'elements': {0: 'Plastica | plastica | plastic', 1: 'Metallo | metallo', 2: 'Acciaio inossidabile | acciaio inossidabile | acciaio | albero della gomma'}}

MDR
14 августа 2021 в 01:32
0

Помогает ли какой-либо из ответов на этот вопрос? Пожалуйста, найдите время, чтобы проголосовать и/или отметить тот, который вам помог (если он был полезен).

Ответы (2)

avatar
MDR
8 августа 2021 в 19:58
0

Измените это как требуется:

#for each row in the frame
for index, row in df.iterrows():
    #if blank skip it
    if row['elements'] == '':
        continue
    #if '|' isn't in the string skip it too
    elif '|' not in row['elements']:
        continue
    else:
        #split the string into a list by the the '|' char
        l = row['elements'].split('|')
        #remove whitespace from the beginning and end of each item
        l = [x.strip() for x in l]
        #for each item in the list
        for i, item in enumerate(l):
            #if the first item
            if i == 0:
                #send; print for testing
                print(item)
            #if not the first item
            else:
                #send; print (for testing) first and current item; 
                #break this into two lines if required
                print(l[0], item)

Выводы:

Plastica
Plastica plastica
Plastica plastic
Metallo
Metallo metallo
Acciaio inossidabile
Acciaio inossidabile acciaio inossidabile
Acciaio inossidabile acciaio
Acciaio inossidabile albero della gomma
avatar
gtomer
8 августа 2021 в 17:47
0

Попробуйте это:

import pandas as pd
df = pd.DataFrame({'elements': ['Plastica|plastic|plastica', 'Metallo|metallo']})
df2 = df['elements'].str.split("|", expand=True)
df2 = df2.stack().reset_index().rename(columns={0: 'elements'})
df2['elements'] = df2['elements'].str.lower()
df2 = df2.drop_duplicates(subset=['elements'])
df2
Isa
8 августа 2021 в 18:21
0

Спасибо, вопрос в том, что если например я отправляю Plastica в качестве ключа, то следующим шагом является отправка в качестве ключа Plastica на другой вебемент, затем я отправляю Plastic и снова мне нужно отправлять Plastica и так далее. По сути, для каждого ключевого слова, найденного после первого слова, я каждый раз отправляю это первое слово.

gtomer
9 августа 2021 в 00:46
0

Не уверен, что вы имеете в виду. Пожалуйста, приведите пример