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
Spalten nach Strings durchsuchen
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".
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".
-
- User
- Beiträge: 491
- Registriert: Mittwoch 13. November 2019, 08:38
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:
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')]
@toschmi: ganz praktisch wären Beispieldaten, mit denen man gleich loslegen kann, sonst muß man als Helfender immer welche selbst erfinden.
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?
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