Массив Numpy как элемент управления фреймами данных pandas

Я рассматриваю Pandas Dataframe. Я хотел бы найти эффективный способ создания второго кадра данных каждый раз, когда имя столбца содержит число 4, и поэтому элементы столбца являются массивами.

 import pandas as pd
 data = {"A4aa":[[1, 2,3,4]], "B":[12,],"B4bb":[[5, 6,7,8]]} 
 data1 = {"A0aa":[1],"A1aa":[2],"A2aa":[3],"A3aa":[4], "B":[12,],"B0bb":[5],"B1bb":[6],"B2bb":[7],"B3bb":[8]}  
 df = pd.DataFrame(data) 
 df1 = pd.DataFrame(data1)
        A4aa         B        B4bb
0   [1, 2, 3, 4]    12  [5, 6, 7, 8]
data1 = {"A0":[1],"A1":[2],"A2":[3],"A3":[4], "B":[12,],"B0":[5],"B1":[6],"B2":[7],"B3":[8]} 
 df1 = pd.DataFrame(data1)
   A0aa A1aa  A2aa  A3aa   B  B0bb  B1bb  B2bb   B3bb
0   1     2   3      4    12   5    6      7     8  
Почему в 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
0
90
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
def f(df):
    def g(c):
        pre, *suf = c.split('4')
        if suf:
            return pd.DataFrame(df[c].tolist()).add_prefix(pre).add_suffix(''.join(suf))
        else:
            return df[c]
    return pd.concat(map(g, df), axis=1)        

f(df)

   A0aa  A1aa  A2aa  A3aa   B  B0bb  B1bb  B2bb  B3bb
0     1     2     3     4  12     5     6     7     8

Извините, я слишком упростил проблему, и решения не пересекаются, я пытаюсь ее адаптировать. Если бы я случайно мог опубликовать эффективное решение с этим новым усложнением, это было бы идеально.

Stefano Barone 21.06.2019 09:47

@StefanoBarone попробуй

piRSquared 21.06.2019 15:32

Большое спасибо, немного более элегантное, но более или менее такое же решение, которое я смог получить из вашего первого ответа.

Stefano Barone 21.06.2019 18:18

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