Вы действительно хотите столбец, содержащий пустые строки или скорее N/A?
фильм
Ответы:
420
Если я правильно понимаю, назначение должно заполнить:
>>>import numpy as np
>>>import pandas as pd
>>> df = pd.DataFrame({"A":[1,2,3],"B":[2,3,4]})>>> df
A B
012123234>>> df["C"]="">>> df["D"]= np.nan
>>> df
A B C D
012NaN123NaN234NaN
Этот ответ только что создал новые строки для меня.
logicbloke
@logicbloke Можете ли вы привести пример, где это происходит?
craymichael
@craymichael Это было давно, но я думаю, что у меня были столбцы с индексами чисел без имен и именованных строк, и он просто создал новую строку в конце.
logicbloke
1
Если dfпусто, вы можете использовать df['new'] = pd.Series() (см. Мой ответ ниже)
Карстен
Как добавить несколько пустых столбцов?
М. Марискал
46
Чтобы добавить ответ DSM и опираться на этот связанный вопрос , я бы разделил подход на два случая:
Добавление одного столбца: просто назначьте пустые значения новым столбцам, например df['C'] = np.nan
Добавление нескольких столбцов. Я бы предложил использовать .reindex(columns=[...])метод панд, чтобы добавить новые столбцы в индекс столбцов данных. Это также работает для добавления нескольких новых строк с .reindex(rows=[...]). Обратите внимание, что более новые версии Pandas (v> 0,20) позволяют вам указывать axisключевое слово, а не явно назначать columnsили rows.
Пример для version >= 0.20.0удаления DataFrame и добавления новых столбцов в виде строк. Пример version < 0.20.0отлично работает на Pandas Version0.24.1
Lalo
@emunsing При поиске ответа на этот вопрос я в конечном итоге нашел ваш ответ полезным. Во - первых, однако, она не работает для меня , как панды требует , axis=1в version = 0.25. Я попытался изменить ваш ответ, включив в него обновленную версию, но я был отклонен @kenlukas и @il_raffa. Я надеюсь, что все изо всех сил пытаются понять, почему ваш ответ не работает для них - как я - по крайней мере сталкивался с этим комментарием.
Грифф
@Griff - я обновил свой ответ, чтобы быть более точным и ясным в вопросах совместимости версий. Спасибо за выделение этого.
Возглавляя
35
еще более простое решение:
df = df.reindex(columns = header_list)
где "header_list" - это список заголовков, которые вы хотите отобразить.
любой заголовок, включенный в список, который еще не найден в кадре данных, будет добавлен с пустыми ячейками ниже.
так что если
header_list =['a','b','c','d']
тогда c и d будут добавлены как столбцы с пустыми ячейками
Начиная с v0.16.0, DF.assign()можно использовать для назначения новых столбцов ( один / несколько ) для DF. Эти столбцы вставляются в алфавитном порядке в конце DF.
Это становится выгодным по сравнению с простым присваиванием в случаях, когда вы хотите выполнить ряд связанных операций непосредственно на возвращенном кадре данных.
Рассмотрим тот же DFпример, который продемонстрировал @DSM:
df = pd.DataFrame({"A":[1,2,3],"B":[2,3,4]})
df
Out[18]:
A B
012123234
df.assign(C="",D=np.nan)Out[21]:
A B C D
012NaN123NaN234NaN
Обратите внимание, что это возвращает копию со всеми предыдущими столбцами вместе с вновь созданными. Для того, чтобы оригинал DFбыл изменен соответствующим образом, используйте его следующим образом: df = df.assign(...)поскольку он не поддерживает inplaceоперации в настоящее время.
@ emunsing - х ответ действительно охладиться для добавления нескольких столбцов, но я не мог заставить его работать на меня в Python 2.7. Вместо этого я нашел это работает:
Приведенный ниже код отвечает на вопрос «Как мне добавить n пустых столбцов в мой существующий фрейм данных». В интересах сохранения решений подобных проблем в одном месте, я добавляю их сюда.
Подход 1 (создать 64 дополнительных столбца с именами столбцов от 1 до 64)
m = list(range(1,65,1))
dd=pd.DataFrame(columns=m)
df.join(dd).replace(np.nan,'')#df is the dataframe that already exists
Подход 2 (создать 64 дополнительных столбца с именами столбцов от 1 до 64)
df['column']=None#This works. This will create a new column with None type
df.column =None#This will work only when the column is already present in the dataframe
N/A
?Ответы:
Если я правильно понимаю, назначение должно заполнить:
источник
df
пусто, вы можете использоватьdf['new'] = pd.Series()
(см. Мой ответ ниже)Чтобы добавить ответ DSM и опираться на этот связанный вопрос , я бы разделил подход на два случая:
Добавление одного столбца: просто назначьте пустые значения новым столбцам, например
df['C'] = np.nan
Добавление нескольких столбцов. Я бы предложил использовать
.reindex(columns=[...])
метод панд, чтобы добавить новые столбцы в индекс столбцов данных. Это также работает для добавления нескольких новых строк с.reindex(rows=[...])
. Обратите внимание, что более новые версии Pandas (v> 0,20) позволяют вам указыватьaxis
ключевое слово, а не явно назначатьcolumns
илиrows
.Вот пример добавления нескольких столбцов:
или
Вы также всегда можете объединить новый (пустой) фрейм данных с существующим фреймом данных, но это не выглядит для меня питонным :)
источник
version >= 0.20.0
удаления DataFrame и добавления новых столбцов в виде строк. Примерversion < 0.20.0
отлично работает на Pandas Version0.24.1
, axis=1
вversion = 0.25
. Я попытался изменить ваш ответ, включив в него обновленную версию, но я был отклонен @kenlukas и @il_raffa. Я надеюсь, что все изо всех сил пытаются понять, почему ваш ответ не работает для них - как я - по крайней мере сталкивался с этим комментарием.еще более простое решение:
где "header_list" - это список заголовков, которые вы хотите отобразить.
любой заголовок, включенный в список, который еще не найден в кадре данных, будет добавлен с пустыми ячейками ниже.
так что если
тогда c и d будут добавлены как столбцы с пустыми ячейками
источник
Начиная с
v0.16.0
,DF.assign()
можно использовать для назначения новых столбцов ( один / несколько ) дляDF
. Эти столбцы вставляются в алфавитном порядке в концеDF
.Это становится выгодным по сравнению с простым присваиванием в случаях, когда вы хотите выполнить ряд связанных операций непосредственно на возвращенном кадре данных.
Рассмотрим тот же
DF
пример, который продемонстрировал @DSM:Обратите внимание, что это возвращает копию со всеми предыдущими столбцами вместе с вновь созданными. Для того, чтобы оригинал
DF
был изменен соответствующим образом, используйте его следующим образом:df = df.assign(...)
поскольку он не поддерживаетinplace
операции в настоящее время.источник
Мне нравиться:
Если у вас есть пустой фрейм данных, это решение гарантирует, что не
NaN
будет добавлена новая строка, содержащая только .Если
dtype
не указано, более новые версии Pandas производятDeprecationWarning
.источник
если вы хотите добавить имя столбца из списка
источник
@ emunsing - х ответ действительно охладиться для добавления нескольких столбцов, но я не мог заставить его работать на меня в Python 2.7. Вместо этого я нашел это работает:
источник
Приведенный ниже код отвечает на вопрос «Как мне добавить n пустых столбцов в мой существующий фрейм данных». В интересах сохранения решений подобных проблем в одном месте, я добавляю их сюда.
Подход 1 (создать 64 дополнительных столбца с именами столбцов от 1 до 64)
Подход 2 (создать 64 дополнительных столбца с именами столбцов от 1 до 64)
источник
Ты можешь сделать
источник
Можно использовать
df.insert(index_to_insert_at, column_header, init_value)
для вставки нового столбца по определенному индексу.Вышеприведенный оператор вставит пустой столбец после первого столбца.
источник