Проверка строк и создание текста с числами

У меня есть такой фрейм данных

import pandas as pd

raw_data = {'ID': [101,101,102,101,102],
            'Loc':['IN','IN','NY','IN','NY'],
            'Sub1':['A','B','C','D','E'],
            'Sub2':['F','G','H','I','J'],
            'Sub3':['K','L','M','N','O'],
        'S_score1': [1, 0, 0, 6,0], 
        'S_score2': [0, 1, 0, 6,0], 
        'S_score3': [0, 1, 0, 6,0], 
        }

df2 = pd.DataFrame(raw_data, columns = ['ID','Loc','Sub1','Sub2','Sub3','S_score1', 'S_score2', 'S_score3'])

Есть набор данных:

Проверка строк и создание текста с числами

Я хочу проверить столбцы оценок и проверить, больше ли баллов, чем 1, затем возьму соответствующую тему и посчитайте в тексте.

Требуемый результат:

Проверка строк и создание текста с числами

это похоже на вопрос ниже, но я не могу получить счет, так как у нас есть дополнительные столбцы, а также необходимо, чтобы требование счетчика было другим.

строковые значения проверяют и генерируют текст

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

BENY 18.12.2018 19:13
u = df2.filter(like='Sub'); v = df2.filter(like='S_score').astype(str); v.columns=u.columns; u=u+'('+v+')' все остальные такие же
BENY 18.12.2018 19:16

это ошибка, которую я получаю, не могу умножить последовательность на не-int типа 'str', так как у нас есть дополнительные столбцы. правильно ли вы упоминаете только один код холодной скорости?

Kumar AK 18.12.2018 19:37

u = df2.filter (например, = 'Sub'); v = df2.filter (like = 'S_score'). astype (bool); s = df2.filter (like = 'S_score'). astype (str); s.columns = u.columns; и = и + '(' + s + ')'

BENY 18.12.2018 19:39
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Учтите, что то, что я пишу как «df», означает то, что вы написали как «df2».

df['AuxIndex'] = [i for i in range(len(df))]


def ScoreText(index):

    Sub1 = df['Sub1'][index]
    Sub2 = df['Sub2'][index]
    Sub3 = df['Sub3'][index]

    Score1 = df['S_score1'][index]
    Score2 = df['S_score2'][index]
    Score3 = df['S_score3'][index]

    if (Score1 + Score2 + Score3 == 0):

        return 'You have not scored'

    else:

        scoreText = 'You have scored on '+ '{x}{y}{z}'.format(x = ' {}({})'.format(Sub1,Score1) if Score1 > 0 else '',
                                                              y = ' {}({})'.format(Sub2,Score2) if Score2 > 0 else '',
                                                              z = ' {}({})'.format(Sub3,Score3) if Score3 > 0 else '' )

    return scoreText



df['S_Text'] = df['AuxIndex'].map(lambda i: ScoreText(i))

df.drop(columns = 'AuxIndex')

Дайте мне знать, если это поможет :)

Другие вопросы по теме