Pandas DataFrame mit hundert Millionen Einträgen und Zählung der Anzahl identischer Zeichen in StringsPython

Python-Programme
Anonymous
 Pandas DataFrame mit hundert Millionen Einträgen und Zählung der Anzahl identischer Zeichen in Strings

Post by Anonymous »

Ich habe einen Pandas DataFrame (

Code: Select all

df
) mit zwei Spalten (nämlich Tuple und Set) und etwa 100.000.000 Einträgen. Die Daten der Tuple-Spalte sind eine Zeichenfolge mit genau 9 Zeichen. Die Daten der Set-Spalte sind eine ordinale Ganzzahl von 0 bis etwa 1.000, die das Tupel dem entsprechenden Set zuordnet. Jeder Satz enthält etwa 100.000 aufeinanderfolgende Tupel.
Jetzt muss ich jedes Tupel (in einer neuen Spalte Label) mit 1 kennzeichnen, wenn es mindestens 5 identische Zeichen enthält, und andernfalls mit 0.
Ich versuche, einen Weg zu finden, dies zu tun, ohne ein Leben lang zu dauern...
Mein erster naiver Versuch (nach dem Importieren). Zähler aus Sammlungen) war

Code: Select all

for j in tqdm(df.index):
cond = max(Counter(df[df.index==j].Tuple.values[0]).values()) >= 5
df.loc[df.index==j, "Label"] = int(cond)
aber laut tqdm würde es auf meinem MacBook Pro etwa 3.350 Stunden dauern (fast 5 Monate, lol).
Da die Tupels also Sätzens mit etwa 100.000 Einträgen zugewiesen sind, habe ich mir überlegt, sie innerhalb jedes einzelnen Satzes zu kennzeichnen und anschließend alles wieder zusammenzusetzen

Code: Select all

dfs = []
for i in tqdm(df.Set.unique()):
_df = df[df.Set==i].copy(deep=True)
for j in tqdm(_df.index, leave=False):
cond = max(Counter(_df[_df.index==j].Tuple.values[0]).values()) >= 5
_df.loc[_df.index==j, "Label"] = int(cond)
dfs.append(_df)
Laut tqdm würde es mehr oder weniger 12 Stunden dauern. Viel besser als 5 Monate und ziemlich erschwinglich! Aber ich habe mich gefragt, ob es einen effizienteren Weg gibt (vielleicht einige nützliche Numpy-- oder Pandas--Funktionen, die mir nicht bekannt sind und die alles ein wenig beschleunigen könnten).
Irgendwelche Vorschläge?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post