Я искал ответ на ту же проблему, поэтому я нашел ваш вопрос.
Я знаю, что этот ответ опоздал на 25 дней, но это мой первый ответ на StackOverflow (или на любом другом сайте), поэтому я 'Я все равно делаю это.
Кроме того, возможно, кому-то еще понадобится ответ на этот вопрос в будущем.Надеюсь, это поможет.
Я новичок, поэтому я рад получить указания / критику (независимо от того, насколько они велики или малы) в отношении того, как я отреагировал.
Чтобы воссоздать ваш макет DF, у меня былочтобы исправить некоторые скобки в вашем коде и
избавиться от 'self' как части переменной b / c, это вызвало ошибку для меня.Кроме того, я добавил sort_index (), чтобы перевернуть индекс, если он у вас есть.
import numpy as np
import pandas as pd
column = [_ for _ in 'ABCDEFGH']
row = range(12, 0, -1)
# board = np.full((12, 8), 7) # to test dtype changes
board = np.full((12, 8), '||')
df0 = pd.DataFrame(board, index=row,
columns=column).sort_index(ascending=False)
Вручную создайте dict, где keys = column.values и values = строки с одинаковыми именами.
footer = {'A':'A', 'B':'B', 'C':'C', 'D':'D', 'E':'E', 'F':'F', 'G':'G', 'H':'H'}
Или заставьте python сделать это за вас
keys = list(df0.columns.values)
values = list(df0.columns.values)
footer = dict(zip(keys, values))
Добавить df0 с указанием.
df1 = df0.append(footer, ignore_index=True)
Получил нижний колонтитул, но не перевернул индекс.
Ошибка "МожетДобавлять Серию можно только в том случае, если ignore_index = True или у Серии есть имя ", поэтому индекс не переворачивается.Так что это может сработать для тех, кому не нужно обращать индекс.Это то, что мне нужно для отображения верхних и нижних колонтитулов для статистики бейсбола.
df2 = df0.append(pd.Series((pd.Series(footer)), name='Footer')) # Change 'Footer' to any text
Нужно было поместить нижний колонтитул во вложенный pd.Series () и добавить имя, чтобы исправить вышеуказанную ошибку.
Без вложенияВы получаете эту ошибку: "append () получил неожиданный аргумент ключевого слова 'name'"
df3 = df0.append(pd.Series((pd.Series(footer)), name='')) # Same as df2 but blank name
df0 соответствует вашему макету данных.df1 - это решение с безымянным нижним колонтитулом, но с восходящим индексом.df2 - это решение с заголовком и правильным индексом.df3 - это решение с неназванным нижним колонтитулом и правильным индексом.
Все вышеперечисленное имеет как верхние, так и нижние колонтитулы, а OP нужны только нижние колонтитулы.Итак, я нашел это ниже, чтобы завершить задачу: Панды - удалить имя столбца
@jezrael дал эту краткую строку, чтобы избавиться от заголовков (но с предостережениями безопасности - может быть лучше сохранить оба заголовкаи нижние колонтитулы.)
df4 = df3
df4.columns = [''] * len(df4.columns)
print(df4) # OP's solution
Добавление ряда строк к существующим столбцам DF преобразует все dtypes в объекты.
Я думаю, что здесь есть обходной путь, если вам нужнорассчитывать по столбцам, будет вычислять столбцы df0 вместо столбцов df4, сохранять их там, где вы хотите, а затем переносить их в df4 для отображения df4 с новыми данными.
Надеюсь, это поможет.