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: []

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

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

Niska wydajność, szczególnie w przypadku dużych danych
raullalves,

2
Czy możesz to powiedzieć w odniesieniu do innych proponowanych alternatyw, @raullalves?
Bouncner

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.