Pandas convierte algunas filas en columnas en Python [duplicado]

6

Entonces, mi conjunto de datos tiene información por negocios n fechas como se muestra a continuación:

Business    Date    Value
a         1/1/2017   127
a         2/1/2017   89
b         2/1/2017   122
a         1/1/2018   555
a         2/1/2018   455

Necesito estos datos como el siguiente formato: ¿Cómo puedo transponerlos? Y no quiero multinivel en mi conjunto de datos de salida

Business    1/1/2017  2/1/2017 1/1/2018  2/1/2018
 a           127         89     555        455
 b           N/A        122      N/A       N/A

Intenté debajo de la sintaxis:

df = df.set_index(['Business','Date'])['Value'].unstack()
df=df.pivot(index='Business', columns='Date', values='Value')

obtuve la salida de la siguiente manera:

Date    1/1/2017    2/1/2017    1/1/2018    2/1/2018
Business
 a        454         5555        555         444 
 b        -            444         -           -

cuando imprimo columnas, no muestra LOB como columna. Mi marco de datos final también debe incluir los campos Negocios, Fecha como columnas para que pueda unir este marco de datos con otro marco de datos en el negocio

0
13

Estás muy cerca de lo que quieres. Todo lo que necesita es eliminar el índice personalizado y reemplazarlo con el índice predeterminado.

pivoted = df.pivot(index='Business', columns='Date', values='Value')\
            .reset_index()
pivoted.columns.name=None
print(pivoted)
#  Business  1/1/2017  1/1/2018  2/1/201  2/1/2017
#0        a     127.0     555.0    455.0      99.0
#1        b       NaN       NaN      NaN     122.0
0
3

Utilice pivote :

df.pivot(index='Business', columns='Date', values='Value')
2
  • 1
    Deberá aclarar y dar un ejemplo. Este código transforma los datos que proporcionó como ejemplo en datos que proporcionó como salida deseada :)
    zipa
    24 feb 2018 a las 0:32
  • actualicé mi pregunta con un ejemplo
    user6157241
    24 feb 2018 a las 0:36