python - una - recorrer data frame pandas
¿Anexar una lista o serie a un DataFrame de pandas como una fila? (6)
Por lo tanto, he inicializado un DataFrame de pandas vacío y me gustaría agregar iterativamente listas (o Series) como filas en este DataFrame. Cual es la mejor manera de hacer esto?
¿Podrías hacer algo como esto?
>>> import pandas as pd
>>> df = pd.DataFrame(columns=[''col1'', ''col2''])
>>> df = df.append(pd.Series([''a'', ''b''], index=[''col1'',''col2'']), ignore_index=True)
>>> df = df.append(pd.Series([''d'', ''e''], index=[''col1'',''col2'']), ignore_index=True)
>>> df
col1 col2
0 a b
1 d e
¿Alguien tiene una solución más elegante?
A veces es más fácil hacer todo lo que se agrega fuera de los pandas, luego, simplemente crea el DataFrame en una sola toma.
>>> import pandas as pd
>>> list=[[''a'',''b'']]
>>> list.append([''e'',''f''])
>>> df=pd.DataFrame(list,columns=[''col1'',''col2''])
col1 col2
0 a b
1 e f
Aquí hay una solución simple y tonta:
>>> import pandas as pd
>>> df = pd.DataFrame()
>>> df = df.append({''foo'':1, ''bar'':2}, ignore_index=True)
Si desea agregar una Serie y usar el índice de la Serie como columnas del Marco de Datos, solo necesita agregar la Serie entre paréntesis:
In [1]: import pandas as pd
In [2]: df = pd.DataFrame()
In [3]: row=pd.Series([1,2,3],["A","B","C"])
In [4]: row
Out[4]:
A 1
B 2
C 3
dtype: int64
In [5]: df.append([row],ignore_index=True)
Out[5]:
A B C
0 1 2 3
[1 rows x 3 columns]
Sin Whitout the ignore_index=True
, no obtiene el índice correcto.
Siguiendo con la respuesta de Mike Chirico ... si quieres agregar una lista una vez que el marco de datos ya está poblado ...
>>> list = [[''f'',''g'']]
>>> df = df.append(pd.DataFrame(list, columns=[''col1'',''col2'']),ignore_index=True)
>>> df
col1 col2
0 a b
1 d e
2 f g
df = pd.DataFrame(columns=list("ABC"))
df.loc[len(df)] = [1,2,3]