Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 07.01.2019
Сообщений: 13

Добавить суффиксы повторяющимся значениям

19.02.2024, 13:01. Показов 680. Ответов 4

Студворк — интернет-сервис помощи студентам
Пытаюсь найти наиболее простое решения для такой задачи. У меня есть датафрейм, некоторые строки датафрема могут содержать повторяющиеся значения. Мне нужно к повторяющимся значениям добавить суффиксы с цифрами.

Например у меня есть строка с такими значениями:
значение x, значение y, значение x, значение x, значение z

Мне нужно, чтобы было так:
значение x, значение y, значение x.1, значение x.2, значение z

Можно ли это сделать максимально просто без циклов?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.02.2024, 13:01
Ответы с готовыми решениями:

Вложенные словари. Обработка по повторяющимся значениям
Пробовал составить словарь такого вида, получилось. Попробовал составить часть словаря d = {'item': , 'amount': } d1 ={} for...

Группировка по повторяющимся значениям
Добрый день! Есть таблица в сокращенном варианте как пример: CREATE TABLE Tab (d1 INT, d2 INT, Val INT); INSERT INTO Tab VALUES ...

заполнить строки по повторяющимся значениям
Уважаемые гуру, помогите решить задачку: Есть два файла (две таблицы). В первом файле в столбце A повторяющиеся строки K0043; ...

4
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
19.02.2024, 15:46
AQZWSX, Совсем без циклов не получилось:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import pandas as pd 
 
def fun(row):
    dct, res= {}, []
    for e in row:
        if e in dct:
            e += f'.{dct[e]}'
        res.append(e)
        dct[e] = dct.get(e, 0) + 1
    return pd.Series(res)
 
 
df = pd.DataFrame([list('xyxxyz'), list('yzyzyz'), list('zzzxxx')])
print(df)
 
df = df.apply(lambda x: fun(x), axis=1)
print(df)
1
0 / 0 / 0
Регистрация: 07.01.2019
Сообщений: 13
20.02.2024, 10:26  [ТС]
Цитата Сообщение от Gdez Посмотреть сообщение
AQZWSX, Совсем без циклов не получилось:
Ну я примерно так же себе это представляю. Но хотелось бы проще.

При считывании датафрейма из xlsx или csv, если в исходном массиве есть столбцы с одинаковыми названиями, то python им автоматом суффиксы добавляет. Я думал может быть есть какая-то функция, которую можно точно так же применить к строкам.
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
20.02.2024, 10:56
AQZWSX,
При считывании датафрейма из xlsx или csv, если в исходном массиве есть столбцы с одинаковыми названиями, то python им автоматом суффиксы добавляет
Потому что там «работа» только с одной строкой - именами столбцов
0
0 / 0 / 0
Регистрация: 07.01.2019
Сообщений: 13
20.02.2024, 17:01  [ТС]
Не знаю может быть кому-то пригодится. Я решил идти таким путем. Есть способ применить метод read_csv не к файлу, а к строке. Все строки датафрейма нужно сделать переменными-строками, а затем каждую строку считать методом read_csv как датафрейм нулевой длины, и взять от датафрейма только названия столбцов. Выглядит это примерно так:

Python
1
2
3
4
5
6
import io
import pandas
 
df = df.apply(lambda x: '!'.join(x), axis=1) #каждую строку датафрейма превращаем в переменную-строку, в качестве разделителя я здесь использую восклицательный знак
df = df.apply(lambda x: pandas.read_csv(filepath_or_buffer=io.StringIO(x), sep='!').columns) #каждую строку датафрейма считываю как отдельный датафрейм и забираю оттуда только названия столбцов.
df = df.apply(lambda x: pandas.Series(x)) #разделяю данные каждой строки по столбцам
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.02.2024, 17:01
Помогаю со студенческими работами здесь

Объединение строк по повторяющимся значениям
Друзья немного в ступоре, функцией ВПР И СПЕЦИТЬ не получается, мб есть на то дело макрос. У меня есть макрос на удаление задвоений но он...

Необходимо разбить таблицу на части по повторяющимся значениям
Здравствуйте. Необходимо разбить таблицу в Matlab по одинаковым значениям. Например, в столбце таблицы сначала, например, в 5 строках...

Как добавить дополнительные подписи к значениям диаграммы?
Ситуация такая необходимо отразить такие данные на графике а именно 3 строку: 2008 2009 2010 2011 2012 5 4 3 2 1 ...

Добавить одно слово ко всем значениям массива
есть массив типа задача сделать из него массив, вида: т.. добавить путь ($base) Вопрос какой функцией это можно сделать? ...

В описание класса добавить поиск максимального по двум значениям
: Ввести класс с полями 1)марка ТВ 2)диагональ 3) цена. Заполнить массив 5-ю объектами. Вывести номера записей: I)с максимальной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. На мобильном - сканируйте QR-код. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru