2016-09-29 3 views
0

Ich habe folgende result Variable in einem Datenrahmen (df) und ich versuche, eine CSV-Datei für diejenigen, die Ausgabe, die mit „test“ beginntschreiben csv in Python basierend auf Unterkette Bedingung

abandoned 
static 
test_a_1 
test_b_2 
abandoned 
test_b_3 

Der folgende Code funktioniert nicht. Vielen Dank im Voraus für Ihre Einsichten

substr="test" 
if substr in df['result']: 
    df.to_csv("C:/Projects/result.csv",sep=',',index=False) 
+0

Wenn du sagst, dass es nicht funktioniert, meinst du damit, dass es überhaupt nicht schreibt oder das falsche Ding schreibt? – depperm

+0

Es ist nicht schriftlich. Das Ergebnis von 'substr in df ['result']' ist falsch – Prasad

Antwort

1

Wenn das, was Sie meinen, ist, dass Sie eine machen wollen csv, die enthält nur die Zeilen, für die starta mit ‚Test‘ zur Folge haben, verwenden Sie die folgenden Schritte aus:

df[df.result.str.contains('^test.*')].to_csv("C:/Projects/result.csv",sep=',',index=False) 
3

Nur weil „test_a_1“ ist in der Liste bedeutet nicht, dass „Test“ ist, in Python Logik.

Beispiel dafür, wie Python wertet "wenn [string] in [list]" -Aussagen:

>>> test = 'test1' 
>>> testlist = ['test1', 'test2'] 
>>> if 'test' in test: 
...  print('hi') 
... 
hi 
>>> if 'test' in testlist: 
...  print('hi') 
... 
>>> 

Dies funktionieren würde:

substr="test" 
for val in df['result']: 
    if substr in val: 
     # Do stuff 
     # And optionally (if you only need one CSV per dataframe rather than one CSV per result): 
     break 
+0

Danke Iroh .. Dies gibt die Ausgabe für alle Ergebniswerte, aber ich bin interessiert zu sehen 'test_a_1',' test_b_2', 'test_b_3' Zeilen in CSV . – Prasad

+0

Sieht aus wie scomes Lösung funktioniert, und es ist ein sexy One-Liner. ;) –

0

Diese funktionieren würde:

df['temp'] = [1 if 'test' in df['result'][k] for k in df.index else 0] 
df['result'][df['temp']==1].to_csv("/your/path", sep=',', index=False) 
Verwandte Themen