Звернення до порожнього 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.