Extrahieren Sie nicht leere Werte aus dem Regex-Array-Ausgang in Python

Ich habe eine Spalte vom Typ numpy.ndarray, die wie folgt aussieht:

col ['','','5',''] ['','8'] ['6','',''] ['7'] [] ['5'] 

Ich möchte das Aussehen wie folgt:

  • Wie lese ich mp4 Video, um von scikit-image verarbeitet zu werden?
  • Colorbar für matplotlib plot_surface Befehl
  • Exportieren von Daten von sqlite zu numpy array
  • Lesen von Zellenwert mit angewandtem Zahlenformat openpyxl? - redux
  • Senden von E-Mails aus Python mit SMTP
  • Python: Set Bits Count (popcount)
  •   col 5 8 6 7 0 5 

    Wie kann ich das in python machen. Jede Hilfe ist sehr geschätzt.

    3 Solutions collect form web for “Extrahieren Sie nicht leere Werte aus dem Regex-Array-Ausgang in Python”

    Um die Daten in numerische Werte umzuwandeln, die Sie verwenden können:

     import numpy as np import pandas as pd data = list(map(np.array, [ ['','','5',''], ['','8'], ['6','',''], ['7'], [], ['5']])) df = pd.DataFrame({'col': data}) df['col'] = pd.to_numeric(df['col'].str.join('')).fillna(0).astype(int) print(df) 

    Erträge

      col 0 5 1 8 2 6 3 7 4 0 5 5 

    Um die Daten in Strings zu konvertieren, verwenden Sie:

     df['col'] = df['col'].str.join('').replace('', '0') 

    Das Ergebnis sieht gleich aus, aber der Datentyp der Spalte ist das object da die Werte Strings sind.


    Wenn es in manchen Reihen mehr als eine Nummer gibt und du das Größte auswählen willst, dann musst du jedes Element in jeder Zeile durchschleifen, jeden String in einen numerischen Wert umwandeln und das Maximum nehmen:

     import numpy as np import pandas as pd data = list(map(np.array, [ ['','','5','6'], ['','8'], ['6','',''], ['7'], [], ['5']])) df = pd.DataFrame({'col': data}) df['col'] = [max([int(xi) if xi else 0 for xi in x] or [0]) for x in df['col']] print(df) 

    Erträge

      col 0 6 # <-- note ['','','5','6'] was converted to 6 1 8 2 6 3 7 4 0 5 5 

    Für Versionen von Pandas vor 0.17 können Sie stattdessen df.convert_objects verwenden:

     import numpy as np import pandas as pd data = list(map(np.array, [ ['','','5',''], ['','8'], ['6','',''], ['7'], [], ['5']])) df = pd.DataFrame({'col': data}) df['col'] = df['col'].str.join('').replace('', '0') df = df.convert_objects(convert_numeric=True) 
      xn = array([['', '', '5', ''], ['', '8'], ['6', '', ''], ['7'], [], ['5']], dtype=object) In [20]: for a in x: ....: if len(a)==0: ....: print 0 ....: else: ....: for b in a: ....: if b: ....: print b ....: 5 8 6 7 0 5 

    Ich werde dich damit verlassen:

     >>> l=['', '5', '', ''] >>> l = [x for x in l if not len(x) == 0] >>> l >>> ['5'] 

    Du kannst das Gleiche mit Lambda und Filter machen

     >>> l ['', '1', ''] >>> l = filter(lambda x: not len(x)==0, l) >>> l ['1'] 

    Der nächste Schritt würde durch die Reihen des Arrays iterieren und eine dieser beiden Ideen implementieren.

    Jemand zeigt, wie dies hier getan wird: Iterating über Numpy Matrix Zeilen, um eine Funktion jeweils anzuwenden?

    Bearbeiten: Vielleicht ist das abgestimmt, aber ich habe es mit Absicht gemacht, den letzten Code nicht zu geben.

    Python ist die beste Programmiersprache der Welt.