Seite 1 von 1

Spalten nach Strings durchsuchen

Verfasst: Dienstag 14. Januar 2020, 20:35
von toschmi
Hallo zusammen,

Ich habe folgendes Problem: Ich habe eine Excel-Tabelle als DataFrame eingelesen.
Die Tabelle besteht aus einer Spalte mit einem Index und aus einer Spalte in der ein Text steht.

Ich möchte nun durch die Spalte mit dem Text iterieren und prüfen ob ein bestimmtes Wort darin enthalten ist.
Wenn das Schlagwort in dieser Spalte steht soll die gesamte Zeile in eine neue Tabelle geschrieben werden.

Bsp:

Index | Satz
1 | Heute ist ein schöner Tag
2 | Thorsten ist ein schöner Mann
3 | gestern hat es geregnet

Ich möchte nach dem Wort "schöner" suchen und erhalte eine neue Tabelle:

Index | Satz
1 | Heute ist ein schöner Tag
2 | Thorsten ist ein schöner Mann

Wenn ich das Wort gegen "hat" tauschen würde, soll die neue Tabelle wie folgt ausssehen:

Index | Satz
3 | gestern hat es geregnet


Danke im voraus,

Gruß

toschmi

Re: Spalten nach Strings durchsuchen

Verfasst: Mittwoch 15. Januar 2020, 08:02
von Sirius3
Was hast Du schon versucht? Wie würde so ein Vergleich bei einem String aussehen und welche Methode aus der Pandas-Dokumentation könnte dafür geeignet sein?

Re: Spalten nach Strings durchsuchen

Verfasst: Donnerstag 16. Januar 2020, 15:51
von toschmi
import numpy as np
import pandas as pd
import xlrd

df = pd.read_excel("Example.xlsx")
df_new = pd.DataFrame(columns=['test_column'])

for i, row in df.iterrows():
if row.get('row_name') == 'Keyword':
df_new.append({'test_column': i}, ignore_index=True)


Das ist mein bisheriges "Konstrukt".

Re: Spalten nach Strings durchsuchen

Verfasst: Donnerstag 16. Januar 2020, 16:19
von einfachTobi
Eine Grundregel: Wenn man über ein DataFrame iteriert, macht man in der Regel etwas falsch.
Es gibt bereits eine Funktion, die für dich die passenden Reihen raus sucht:

Code: Alles auswählen

data = {'Satz':['Heute ist ein schöner Tag', 'Thorsten ist ein schöner Mann', 'gestern hat es geregnet']}
df = pd.DataFrame(data)
df[df['Satz'].str.contains('schöner')]

Re: Spalten nach Strings durchsuchen

Verfasst: Donnerstag 16. Januar 2020, 16:20
von Sirius3
@toschmi: ganz praktisch wären Beispieldaten, mit denen man gleich loslegen kann, sonst muß man als Helfender immer welche selbst erfinden.

Code: Alles auswählen

In [1]: from io import StringIO

In [2]: import pandas as pd

In [3]: content = """Keyword Value
   ...: ac 7
   ...: de 9
   ...: qf 4
   ...: ac 3
   ...: de 1
   ...: """
   ...: 

In [4]: data = pd.read_csv(StringIO(content), delimiter=' ')

In [5]: data['Keyword'] == 'ac'
Out[5]: 
0     True
1    False
2    False
3     True
4    False
Name: Keyword, dtype: bool

In [6]: filtered_data = data[data['Keyword'] == 'ac']
In [7]: filtered_data
Out[7]: 
  Keyword  Value
0      ac      7
3      ac      3
Jetzt mußt Du das aber noch auf Deinen Anwendungsfall anpassen, dass Du eigentlich nicht ganze Zellen vergleichen willst, sondern nur Teilzellen. Wie sähe das denn aus, wenn Du das mit Strings machen würdest?