0

Добавление пустой строки в DataFrame с помощью pandas

16

Я пытаюсь добавить пустую строку в конец DataFrame, но у меня не получается. Я пытаюсь разобраться, как работает функция append в pandas, и всё равно не понимаю.

Вот мой код:

import pandas as pd

excel_names = ["ARMANI+EMPORIO+AR0143-book.xlsx"]
excels = [pd.ExcelFile(name) for name in excel_names]
frames = [x.parse(x.sheet_names[0], header=None, index_col=None).dropna(how='all') for x in excels]
for f in frames:
    f.append(0, float('NaN'))
    f.append(2, float('NaN'))

В моем DataFrame две колонки и произвольное количество строк.

При выводе print(f) в цикле for я получаю следующий результат:

                             0                 1
0                   Brand Name    Emporio Armani
2                 Model number            AR0143
4                  Part Number            AR0143
6                   Item Shape       Rectangular
8   Dial Window Material Type           Mineral
10               Display Type          Analogue
12                 Clasp Type            Buckle
14               Case Material   Stainless steel
16              Case Diameter    31 millimetres
18               Band Material           Leather
20                 Band Length  Women's Standard
22                 Band Colour             Black
24                 Dial Colour             Black
26            Special Features       second-hand
28                    Movement            Quartz

Как я могу успешно добавить пустую строку в конец DataFrame?

5 ответ(ов)

0

Если вы хотите добавить новую pandas.Series в pandas.DataFrame с помощью метода append(), вы можете сделать это следующим образом:

Если вы хотите указать имя (или "индекс") для новой строки, используйте:

df.append(pandas.Series(name='ИмяНовойСтроки'))

Если вам не нужно называть новую строку, используйте:

df.append(pandas.Series(), ignore_index=True)

где df — это ваш объект pandas.DataFrame.

Не забудьте, что метод append() возвращает новый DataFrame и не изменяет исходный.

0

Вы можете добавить пустую строку в DataFrame, добавив серию следующим образом. Я предполагаю, что под "пустым" вы имеете в виду строку, содержащую только значения "NaN".

Сначала создайте объект Series с NaN. Не забудьте указать столбцы при определении объекта 'Series' в параметре -index. Затем вы сможете добавить его в DataFrame. Надеюсь, это поможет!

from numpy import nan as Nan
import pandas as pd

>>> df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
...                     'B': ['B0', 'B1', 'B2', 'B3'],
...                     'C': ['C0', 'C1', 'C2', 'C3'],
...                     'D': ['D0', 'D1', 'D2', 'D3']},
...                     index=[0, 1, 2, 3])

>>> s2 = pd.Series([Nan, Nan, Nan, Nan], index=['A', 'B', 'C', 'D'])
>>> result = df1.append(s2)
>>> result
     A    B    C    D
0   A0   B0   C0   D0
1   A1   B1   C1   D1
2   A2   B2   C2   D2
3   A3   B3   C3   D3
4  NaN  NaN  NaN  NaN
0

Вы можете добавить новую серию в DataFrame и одновременно задать ей имя. Это имя будет индексом новой строки, а все значения в ней автоматически будут NaN. Пример кода выглядит следующим образом:

df.append(pd.Series(name='Afterthought'))

Однако стоит отметить, что метод append устарел в последних версиях pandas, и рекомендуется использовать pd.concat. Ниже приведён аналогичный код с использованием pd.concat:

df = pd.concat([df, pd.Series(name='Afterthought')])

Таким образом, вы сможете добавить новую серию с заданным именем, и все значения в ней будут заполнены NaN.

0

Если предположить, что df — это ваш DataFrame, вы можете добавить дополнительную строку с NaN значениями следующим образом:

df_prime = pd.concat([df, pd.DataFrame([[np.nan] * df.shape[1]], columns=df.columns)], ignore_index=True)

В результате df_prime будет равен df, но с добавленной последней строкой, содержащей NaN.

Однако стоит отметить, что pd.concat может работать медленно. Если вам нужно выполнять эту операцию в цикле, лучше избегать его использования. В этом случае, при условии, что ваш индекс инкрементален, вы можете использовать следующий код:

df.loc[df.iloc[-1].name + 1, :] = np.nan

Этот способ более эффективен и позволяет избежать накладных расходов, связанных с конкатенацией.

0

Чтобы добавить пустую строку в DataFrame и заполнить выбранные ячейки, можно воспользоваться следующими шагами:

Сначала создайте пустой DataFrame без строк, только с колонками a и b:

import pandas as pd    
col_names =  ["a", "b"]
df  = pd.DataFrame(columns=col_names)

Теперь добавьте пустую строку в конце DataFrame:

df = df.append(pd.Series(), ignore_index=True)

Затем заполните пустую ячейку в конце (len(df)-1) DataFrame в колонке a:

df.loc[[len(df)-1], 'a'] = 123

Результат будет следующим:

     a    b
0  123  NaN

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

col_names =  ["a", "b"]
df  = pd.DataFrame(columns=col_names)
for x in range(0, 5):
    df = df.append(pd.Series(), ignore_index=True)
    df.loc[[len(df)-1], 'a'] = 123

Результат в этом случае будет таким:

     a    b
0  123  NaN
1  123  NaN
2  123  NaN
3  123  NaN
4  123  NaN

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

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь