Anexando a um DataFrame vazio no Pandas?


212

É possível anexar a um quadro de dados vazio que não contenha índices ou colunas?

Eu tentei fazer isso, mas continuo recebendo um quadro de dados vazio no final.

por exemplo

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

O resultado fica assim:

Empty DataFrame
Columns: []
Index: []

Respondeu a uma pergunta semelhante aqui: stackoverflow.com/questions/13784192/… . basicamente algo parecido com istonewDF = pd.DataFrame() #creates a new dataframe that's empty newDF = newDF.append(oldDF, ignore_index = True) # ignoring index is optional
geekidharsh

Anexar o que? Um valor único? uma lista Python? uma série de pandas? Outro Dataframe? O seu comentário exemplo de fuga sugere que você quer dizer outra trama de dados - para dar uma trama de dados no seu código exemplo, já :)
SMCI

E quando você diz "Os olhares resultado como este", eu espero que você não está tentando fazer diretamente print(df.append(data)), porque append()sempre retorna Nenhum em Python
SMCI

Respostas:


388

Isso deve funcionar:

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

Mas a appendnão acontecer no local , assim você vai ter que armazenar a saída se você quiser:

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

8
Obrigado! Isso funcionou! Não sabia que tinha que armazenar a saída ... Provavelmente deveria ter lido melhor a documentação, mas agradeço, @DSM!
Ericmjl

9
Eu sempre esqueço que você precisa atribuí-lo!
Andy B

66
na verdade que append não acontece em lugar é a informação mais importante aqui;)
refuzee

6
Nenhuma pista de por que os exemplos do Pandas não mostram isso. Obrigado pela ajuda!
Tirou Szurko

2
observe que, pelo menos em junho de 2018, se você quiser que as novas linhas se auto-indexem, escreva df.append (data, ignore_index = True). Obrigado pela ótima resposta!
18718 Adam B

98

E se você deseja adicionar uma linha, pode usar um dicionário:

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

o que lhe dá:

   age  height name
0    9       2  Zed

Low performace, especialmente quando se lida com grandes volumes de dados
raullalves

2
Você pode colocar isso em relação às outras alternativas propostas, @raullalves?
Bouncner

23

Você pode concatinar os dados desta maneira:

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

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

Obrigado, eu tentei o concat. Mas por que tanto append e concat se eles podem fazer o mesmo trabalho
Nitesh Kumar

Esta discussão pode dar uma boa explicação: stackoverflow.com/questions/15819050/…
#
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.