Как перечислить значения строки и добавить в качестве нового столбца в DataFrame?

У меня есть набор данных следующим образом:

data = {"C1": [0.98,  1.10], "C2": [1.25,  0.99],
        "C3": [1.3,   1.41], "C4": [1.00,  .99] }
data = pd.DataFrame(data)

    C1    C2    C3    C4
0  0.98  1.25  1.30  1.00
1  1.10  0.99  1.41  0.99

Я хочу иметь новый столбец, который представляет собой list всех чисел в одной строке. Таким образом, мой желаемый результат будет следующим:

    C1    C2    C3    C4          New_Column
0  0.98  1.25  1.30  1.00  [0.98,  1.25,  1.30,  1.00]
1  1.10  0.99  1.41  0.99  [1.10,  0.99,  1.41,  0.99]
 

Я уже разработал следующий код:

    data["New_Column"] = np.nan

    def create_list_of_numbers(data):
        for i in range(len(data)-1):

        print(data.iloc[i,:4].values)  # Gives the list of values of first four columns
        data.iloc[i,dt.columns.get_loc("New_Column")] = data.iloc[i,:4].values

    return data

Я получаю следующую ошибку: «ValueError: установка элемента массива с помощью последовательности».

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

Отвечает ли это на ваш вопрос? Панды Python вставляют список в ячейку

Mykola Zotko 25.12.2020 23:30
Почему в 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
1
1 301
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Вы можете передать конструктор list как функцию агрегирования по оси 1 (индекс)

data['New_column'] = data.agg(list, axis=1)

Выходы:

     C1    C2    C3    C4               New_column
0  0.98  1.25  1.30  1.00   [0.98, 1.25, 1.3, 1.0]
1  1.10  0.99  1.41  0.99  [1.1, 0.99, 1.41, 0.99]

Вы можете использовать функцию вставки для вставки нового столбца. Это должно решить вашу проблему.

def append_new_column():
data = {"C1": [0.98,  1.10], "C2": [1.25,  0.99],
    "C3": [1.3,   1.41], "C4": [1.00,  .99] }
data = pd.DataFrame(data)
new_column = []
for i in range(len(data)):
    new_column.append(data.iloc[i,0:4].values)
data.insert(len(data.columns), "New Column", new_column, True)
return data

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