Групповые панды в разных разделах - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть сериализованный набор данных, содержимое которого разделено пробелами, например #a value1 #b value2 ...., где первый элемент с # - это имя столбца, а второй - значение.Моя проблема возникает в некоторых разделах этого набора данных, который имеет последовательность, подобную этой "#% value1 #% value2", эта особая метка представляет столбец с несколькими значениями, поэтому мне нужен механизм для преобразования этих нескольких строк в одну.Например.Исходные данные = #a value1 #b value2 #% value3 #% value4 #a value5 #b value6 #% value7 #% value8

После моего процесса разделения:

Key    value
#a.     Value1
#b.     Value2
#%.    Value3
#%.    Value4
#a.     Value5
#b.     Value6
#%.    Value7
#%.    Value8

Но мне нужно это:

Key    value
    #a.     Value1
    #b.     Value2
    #%.    Value3,Value4
    #a.     Value5
    #b.     Value6
    #%.    Value7,Value8

Как я могу выполнить эту локальную группу с помощью панд?Одна деталь - это огромный набор данных (~ 2 ГБ), и я запускаю все это на хорошем, но нормальном ПК.

1 Ответ

0 голосов
/ 03 декабря 2018

Сначала создайте ключ справки, используя shift и cumsum, затем он станет обычной проблемой groupby и join

s=(df.Key!=df.Key.shift()).cumsum()
df.groupby([df.Key,s]).value.apply(','.join).\
     sort_index(level=1).\
       reset_index(level=1,drop=True)
Out[788]: 
Key
#a.           Value1
#b.           Value2
#%.    Value3,Value4
#a.           Value5
#b.           Value6
#%.    Value7,Value8
Name: value, dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...