Переименовать первую строку фрейма данных pandas

Обновлять:

Просмотр фрейма данных

@jezrael, пожалуйста, найдите изображение Dataframe, о котором я говорю. Надеюсь это поможет.

У меня есть фреймворк pandas, построенный с использованием функции (value_counts). Вывод имеет заголовок из двух столбцов с метками Безымянный: 0, Безымянный: 1.

Ниже представлен вид Dataframe:

Unnamed:0,Unnammed:1
Drop less than 1%,3
Drop less than 2%,5
Drop less than 3%,2

Ниже приведен код, который я использовал для создания этого фрейма данных:

Output1.groupby(['Status']).agg(lambda x: x.mad())
Output1 = Output1.replace(np.nan, '', regex=True)
SumMail = pd.DataFrame(pd.value_counts(Output1['Status']).sort_index())
SumMail.rename(columns=lambda x: x[10:], inplace=True)

Может ли кто-нибудь посоветовать, как я могу иметь эти заголовки с меткой. Спасибо.

Спасибо..

df.columns = ['a','b'] должен работать.
jezrael 20.04.2018 12:43

Каковы ваши входные данные выборки?

jezrael 20.04.2018 12:45

@jezrael, ниже представлен вид фрейма данных Output1, Status 0, ABC, Drop меньше 1% 1, DEF, Drop меньше 1% 2, KLM, Drop меньше 2% 3, XYZ, Drop меньше 3 %

Taukheer 20.04.2018 12:51

Вы можете проверить ответ?

jezrael 20.04.2018 12:53
Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
466
1

Ответы 1

Я считаю, что нужно:

Output1 = pd.DataFrame({'Status': ['Drop less than 1%',
                                   'Drop less than 1%',
                                    np.nan, 
                                   'Drop less than 2%', 
                                   'Drop less than 2%', 
                                   'Drop less than 3%']})

print (Output1)
              Status
0  Drop less than 1%
1  Drop less than 1%
2                NaN
3  Drop less than 2%
4  Drop less than 2%
5  Drop less than 3%

Output1 = Output1.replace(np.nan, '', regex=True)
SumMail = (Output1['Status'].value_counts()
                            .sort_index()
                            .head(10)
                            .rename_axis('a')
                            .reset_index(name='b'))
print (SumMail)
                   a  b
0                     1
1  Drop less than 1%  2
2  Drop less than 2%  2
3  Drop less than 3%  1

Привет, @jezrael, большое спасибо, это сработало отлично, в соответствии с тем, что я искал. Однако извлеченный Dataframe имеет следующую структуру: Безымянный: 0, a, b 0,0, падение менее 1%, 1 1,1, падение менее 2%, 2 2,2, падение менее 3%, 2 может пожалуйста, помогите удалить этот столбец с пометкой Безымянный: 0 Я попробовал функцию ниже, чтобы удалить этот столбец SumMail.drop (SumMail.columns [[0]], axis = 1, inplace = True). Он удалил столбец состояния, а не Безымянный: 0 столбец.

Taukheer 20.04.2018 13:21

<class 'pandas.core.frame.DataFrame'> RangeIndex: 8 записей, от 0 до 7 столбцов данных (всего 2 столбца): 8 ненулевых объектов b 8 ненулевых типов int64 dtypes: int64 (1), объект (1 ) использование памяти: 208,0+ байт Нет

Taukheer 20.04.2018 13:27

Хорошо, попробуйте df = df.rename_axis(None) или df = df.rename_axis(None, axis=1)

jezrael 20.04.2018 13:28

и если также необходимо создать индекс по умолчанию, используйте df = df.reset_index(drop=True)

jezrael 20.04.2018 13:29

попробовали все три варианта, но столбец без имени: 0 все еще отображается в фрейме данных ..

Taukheer 20.04.2018 13:50

Что такое print (df.columns.tolist())?

jezrael 20.04.2018 13:51

Это возвращает только два столбца, как показано ниже: ['a', 'b'] Но когда я сохраняю Dataframe и использую его в почте, я вижу этот дополнительный столбец ..

Taukheer 20.04.2018 13:53

@Taukheer - Я понятия не имею, я думаю, что если использовать мой код, все должно быть в порядке. Или есть 2 разных DataFrames?

jezrael 20.04.2018 13:55

У меня есть один Dataframe, но с его помощью создайте два файла csv. Один содержит полные необработанные данные, а другой - сводные данные по разным категориям. В любом случае спасибо за помощь в создании столбца, который был важнее, чем этот дополнительный безымянный столбец.

Taukheer 20.04.2018 13:58

@Taukheer, так что теперь нет проблем с безымянным столбцом?

jezrael 20.04.2018 14:11

Это все еще часть добычи, поскольку вы сказали, что не имеете никакого другого представления, я хотел бы поблагодарить вас за вашу помощь :)

Taukheer 20.04.2018 14:13

@Taukheer - У меня есть идея - Вы можете проверить print (df.index.name), print (df.columns.name), print (df.columns.tolist()) и print (df.index) на предмет проблемных DataFrame?

jezrael 20.04.2018 14:32

Я запустил коды для обоих фреймов данных. Прилагается вывод для первого фрейма данных. Должен добавить вывод для второго фрейма данных в следующий комментарий из-за нехватки места. Я запустил 4 кода для обоих фреймов данных, и они вернулись, как показано ниже: print (SumMail.index.name) - None print (SumMail.columns. имя) - Нет print (SumMail.columns.tolist ()) - ['a', 'b'] print (SumMail.index) - RangeIndex (start = 0, stop = 8, step = 1)

Taukheer 20.04.2018 15:43

Вывод для второго фрейма данных ... print (Output1.index.name) - None print (Output1.columns.name) - None print (Output1.columns.tolist ()) - ['Status'] print (Output1 .index) - Int64Index ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ... 281, 282, 283, 284, 285, 286, 287, 288, 289, 290 ], dtype = 'int64', length = 291) Надеюсь, это поможет

Taukheer 20.04.2018 15:47

@Taukheer, так что все нормально работает? Можете ли вы добавить вывод dataframe или csv, где находится Unnamed:0. Может, мы плохо понимаем друг друга. Спасибо.

jezrael 20.04.2018 17:49

Я отредактировал свое первое сообщение с учетом Dataframe.

Taukheer 20.04.2018 21:45

Спасибо @jezrael за исправление. Используется ниже для удаления безымянного столбца: 0 df = pd.read_csv ('DF_csv.csv', index_col = [0])

Taukheer 21.04.2018 19:52

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