Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

167
Views
Lea numpy en el marco de datos de pandas y vuelva al archivo

Tengo un archivo binario que está empaquetado y construido como repetido:

 struct Record { uint32_t a; double b; } __attribute__ ((packed));

Estoy leyendo este archivo binario con python así:

 def read_file(filename): dt = np.dtype([('a', np.uint32), ('b', np.float64)]) data = np.fromfile(filename, dtype=dt) df = pd.DataFrame(data=data, columns=dt.names) return df

Luego, estoy manipulando los datos en el marco de datos y luego me gustaría guardarlos en un archivo en el mismo formato.

Estoy intentando esto:

 df.to_numpy(dtype=dt).tofile('/tmp/out2.bin')

Pero si el archivo es lo que esperaba, porque parece que to_numpy(dtype=dt) con una matriz no modificada no da como resultado la matriz original. Aquí hay un ejemplo completo reproducible:

 import numpy as np import pandas as pd import io dt = np.dtype([ ('a', np.uint32), ('b', np.float64) ]) data = np.frombuffer(b'\1\2\3\4\x00\x00\x00\x00\x00\x00E@', dtype=dt) print(data) df = pd.DataFrame(data=data, columns=dt.names) print(df) from_df = df.to_numpy(dtype=dt) print(from_df)

La primera impresión imprime una matriz de un elemento de estructura:

 [(67305985, 42.)]

y el segundo un marco de datos

 ab 0 67305985 42.0

Ahora esperaría que la to_numpy(dtype=dt) en el marco de datos no modificado haga una matriz que sea igual a la primera, pero en su lugar obtengo algo que se imprime

 [[(67305985, 6.7305985e+07) ( 42, 4.2000000e+01)]]

¿Cómo convertir el marco de datos de Pandas de nuevo a la matriz de estructuras unidimensional original?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

No conozco ninguna buena manera de hacer que los pandas hagan un tipo de estructura.

 dt = np.dtype([('a', np.uint32), ('b', np.float64)]) df = read_file(...)

Vas a tener que crear una matriz vacía y llenarla tú mismo.

 d = np.empty(df.shape[1], dtype=dt) d['a'], d['b'] = df['a'], df['b'] d.tofile('/tmp/out2.bin')
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!