Звернення до порожнього 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? серія панд? Ще один Dataframe? Ваш приклад останнього коментаря говорить про те, що ви маєте на увазі ще один кадр даних - тому вже вкажіть кадр даних у своєму прикладі коду :)
— 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
я завжди забуваю, що вам потрібно це призначити!
— Енді Б

66
насправді те, що додавання не відбувається на місці, є найважливішою інформацією тут;)
— refuzee

6
Немає поняття, чому приклади Pandas цього не показують. Спасибі за вашу допомогу!
— Дрю Шурко

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.