Присоединяешься к пустому DataFrame в Pandas?


212

Можно ли добавить пустой фрейм данных, который не содержит индексов или столбцов?

Я пытался сделать это, но продолжаю получать пустой фрейм данных в конце.

например

df = pd.DataFrame()
data = ['some kind of data here' --> I have checked the type already, and it is a dataframe]
df.append(data)

Результат выглядит так:

Empty DataFrame
Columns: []
Index: []

Ответили на аналогичный вопрос здесь: stackoverflow.com/questions/13784192/… . в основном как то такnewDF = pd.DataFrame() #creates a new dataframe that's empty newDF = newDF.append(oldDF, ignore_index = True) # ignoring index is optional
geekidharsh

Добавить что? Единственное значение? список Python? Серия панд? Еще один датафрейм? В конце вашего примера комментария предлагается, чтобы вы
smci

И когда вы говорите: «Результат выглядит следующим образом», я надеюсь, что вы не пытаетесь сделать это напрямую print(df.append(data)), потому что append()всегда возвращает None в Python
smci

Ответы:


388

Это должно работать:

>>> df = pd.DataFrame()
>>> data = pd.DataFrame({"A": range(3)})
>>> df.append(data)
   A
0  0
1  1
2  2

Ноappend не бывает на месте , так что вы должны будете хранить выход , если вы хотите:

>>> df
Empty DataFrame
Columns: []
Index: []
>>> df = df.append(data)
>>> df
   A
0  0
1  1
2  2

8
Спасибо! Это сработало! Я не осознавал, что должен был хранить результаты ... Я, вероятно, должен был прочитать документацию лучше, но я ценю это, @DSM!
ericmjl

9
Я всегда забываю, что нужно назначить это!
Энди Б

67
на самом деле это добавление не происходит на месте, это самая важная информация здесь;)
Refzee

7
Понятия не имею, почему примеры Панд не показывают это. Спасибо за вашу помощь!
Дрю Сзурко

2
обратите внимание, что, по крайней мере, в июне 2018 года, если вы хотите, чтобы новые строки сами автоматически индексировали, вы должны написать df.append (data, ignore_index = True). Спасибо за отличный ответ!
Адам Б.

98

И если вы хотите добавить строку, вы можете использовать словарь:

df = pd.DataFrame()
df = df.append({'name': 'Zed', 'age': 9, 'height': 2}, ignore_index=True)

что дает вам:

   age  height name
0    9       2  Zed

Низкая производительность, особенно при работе с большими данными
raullalves

2
Можете ли вы выразить это по отношению к другим предложенным альтернативам, @raullalves?
Bouncner

23

Вы можете объединить данные следующим образом:

InfoDF = pd.DataFrame()
tempDF = pd.DataFrame(rows,columns=['id','min_date'])

InfoDF = pd.concat([InfoDF,tempDF])

Спасибо, я попробовал конкат. Но зачем и добавлять, и соглашаться, если они могут выполнять одну и ту же работу
Нитеш Кумар

Эта тема может дать хорошее объяснение: stackoverflow.com/questions/15819050/…
Deepish
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.