Dołączasz do pustej ramki danych w pandach?

212

Czy można dołączyć do pustej ramki danych, która nie zawiera żadnych indeksów ani kolumn?

Próbowałem to zrobić, ale wciąż otrzymuję pustą ramkę danych na końcu.

na przykład

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

Wynik wygląda następująco:

Empty DataFrame
Columns: []
Index: []
ericmjl
źródło
Odpowiedział na podobne pytanie tutaj: stackoverflow.com/questions/13784192/... . w zasadzie coś takiegonewDF = pd.DataFrame() #creates a new dataframe that's empty newDF = newDF.append(oldDF, ignore_index = True) # ignoring index is optional
geekidharsh
Dołącz co? Jedna wartość? lista Python? seria pand? Inna ramka danych? Twój przykładowy komentarz końcowy sugeruje, że masz na myśli inną ramkę danych - więc podaj ramkę danych w przykładowym kodzie już :)
smci
A kiedy powiesz „Wynik wygląda tak”, mam nadzieję, że nie próbujesz tego zrobić bezpośrednio print(df.append(data)), ponieważ append()zawsze zwraca Brak w Pythonie
smci

Odpowiedzi:

388

To powinno działać:

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

Ale nie stanie w miejscu , więc trzeba będzie przechowywać dane wyjściowe, jeśli chcesz:append

>>> df
Empty DataFrame
Columns: []
Index: []
>>> df = df.append(data)
>>> df
   A
0  0
1  1
2  2
DSM
źródło
8
Dziękuję Ci! To się udało! Nie zdawałem sobie sprawy, że muszę przechowywać dane wyjściowe ... Prawdopodobnie powinienem był lepiej przeczytać dokumentację, ale doceniam to, @DSM!
ericmjl
9
zawsze zapominam, że musisz to przypisać!
Andy B,
66
właściwie to, że append się nie zdarza, jest najważniejszą informacją tutaj;)
odmówiono
6
Nie ma pojęcia, dlaczego przykłady Pandy tego nie pokazują. Dzięki za pomoc!
Drew Szurko,
2
zwróć uwagę, że przynajmniej w czerwcu 2018 r., jeśli chcesz, aby nowe wiersze same się automatycznie indeksowały, powinieneś napisać df.append (data, ignore_index = True). Dzięki za świetną odpowiedź!
Adam B,
98

A jeśli chcesz dodać wiersz, możesz użyć słownika:

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

co daje ci:

   age  height name
0    9       2  Zed
dval
źródło
Niska wydajność, szczególnie w przypadku dużych danych
raullalves,
2
Czy możesz to powiedzieć w odniesieniu do innych proponowanych alternatyw, @raullalves?
Bouncner
23

Możesz konkatować dane w ten sposób:

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

InfoDF = pd.concat([InfoDF,tempDF])
Deepish
źródło
Dziękuję, spróbowałem concat. Ale po co dołączać i konkatować, skoro mogą wykonywać tę samą pracę
Nitesh kumar
Ten wątek może dać dobre wyjaśnienie: stackoverflow.com/questions/15819050/…
Deepish