python - pandas exercises online
¿Es posible anexar Series a filas de DataFrame sin hacer una lista primero? (4)
Tengo algunos datos que intento organizar en un DataFrame
en Pandas
. Estaba tratando de hacer de cada fila una Series
y DataFrame
al DataFrame
. Encontré una forma de hacerlo agregando la Series
a una list
vacía y luego convirtiendo la list
de la Series
en un DataFrame
por ejemplo, DF = DataFrame([series1,series2],columns=series1.index)
Esta list
para el paso DataFrame
parece ser excesiva. He comprobado algunos ejemplos aquí, pero ninguna de las Series
conservó las etiquetas de Index
de la Series
para usarlas como etiquetas de columna.
Mi largo camino donde las columnas son id_names y las filas son type_names:
¿Es posible anexar Series a filas de DataFrame sin hacer una lista primero?
#!/usr/bin/python
DF = DataFrame()
for sample,data in D_sample_data.items():
SR_row = pd.Series(data.D_key_value)
DF.append(SR_row)
DF.head()
TypeError: Can only append a Series if ignore_index=True or if the Series has a name
Entonces lo intenté
DF = DataFrame()
for sample,data in D_sample_data.items():
SR_row = pd.Series(data.D_key_value,name=sample)
DF.append(SR_row)
DF.head()
Marco de datos vacío
Intentado Insertar una fila en el marco de datos de pandas Aún obteniendo un marco de datos vacío: /
Estoy tratando de hacer que la Serie sea la fila, donde el índice de la Serie se convierte en las etiquetas de columna del Marco de Datos.
Algo como esto podría funcionar ...
mydf.loc[''newindex''] = myseries
Aquí hay un ejemplo donde lo usé ...
stats = df[[''bp_prob'', ''ICD9_prob'', ''meds_prob'', ''regex_prob'']].describe()
stats
Out[32]:
bp_prob ICD9_prob meds_prob regex_prob
count 171.000000 171.000000 171.000000 171.000000
mean 0.179946 0.059071 0.067020 0.126812
std 0.271546 0.142681 0.152560 0.207014
min 0.000000 0.000000 0.000000 0.000000
25% 0.000000 0.000000 0.000000 0.000000
50% 0.000000 0.000000 0.000000 0.013116
75% 0.309019 0.065248 0.066667 0.192954
max 1.000000 1.000000 1.000000 1.000000
medians = df[[''bp_prob'', ''ICD9_prob'', ''meds_prob'', ''regex_prob'']].median()
stats.loc[''median''] = medians
stats
Out[36]:
bp_prob ICD9_prob meds_prob regex_prob
count 171.000000 171.000000 171.000000 171.000000
mean 0.179946 0.059071 0.067020 0.126812
std 0.271546 0.142681 0.152560 0.207014
min 0.000000 0.000000 0.000000 0.000000
25% 0.000000 0.000000 0.000000 0.000000
50% 0.000000 0.000000 0.000000 0.013116
75% 0.309019 0.065248 0.066667 0.192954
max 1.000000 1.000000 1.000000 1.000000
median 0.000000 0.000000 0.000000 0.013116
Tal vez una forma más fácil sería agregar pandas.Series
a pandas.DataFrame
con ignore_index=True
Argumento ignore_index=True
a DataFrame.append()
. Ejemplo -
DF = DataFrame()
for sample,data in D_sample_data.items():
SR_row = pd.Series(data.D_key_value)
DF = DF.append(SR_row,ignore_index=True)
Demo
In [1]: import pandas as pd
In [2]: df = pd.DataFrame([[1,2],[3,4]],columns=[''A'',''B''])
In [3]: df
Out[3]:
A B
0 1 2
1 3 4
In [5]: s = pd.Series([5,6],index=[''A'',''B''])
In [6]: s
Out[6]:
A 5
B 6
dtype: int64
In [36]: df.append(s,ignore_index=True)
Out[36]:
A B
0 1 2
1 3 4
2 5 6
Otro problema en su código es que DataFrame.append()
no está en su lugar, devuelve el marco de datos adjunto, debe asignarlo de nuevo a su marco de datos original para que funcione. Ejemplo -
DF = DF.append(SR_row,ignore_index=True)
Para preservar las etiquetas, puede usar su solución para incluir el nombre de la serie junto con la asignación del marco de datos adjunto de nuevo a DF
. Ejemplo -
DF = DataFrame()
for sample,data in D_sample_data.items():
SR_row = pd.Series(data.D_key_value,name=sample)
DF = DF.append(SR_row)
DF.head()
DataFrame.append() no modifica el DataFrame en su lugar. df = df.append(...)
hacer df = df.append(...)
si desea volver a df = df.append(...)
a la variable original.