Ich habe Daten wie die SampleDf Daten unten. Ich versuche Werte in einer Spalte in meinem Datenrahmen zu überprüfen, um zu sehen, ob sie 'Summe' oder 'Anzahl' oder 'Avg' enthalten, und erstelle dann eine neue Spalte mit dem Wert 'Summe', 'Anzahl' oder 'Avg' . Wenn ich den unten stehenden Code auf meinem realen Datenfeld ausführe, erhalte ich den Fehler unten. Wenn ich dtypes auf meinem realen Datenrahmen laufe, sagt es, dass alle Spalten Objekte sind. Der folgende Code bezieht sich auf den Post unten. Leider bekomme ich nicht die gleichen Fehler, wenn ich den Code auf SampleDf ausführe, den ich zur Verfügung gestellt habe, aber ich konnte meinen ganzen Datenrahmen nicht veröffentlichen.Pandas Error Matching String
Beitrag: Pandas and apply function to match a string
Code:
SampleDf=pd.DataFrame([['tom',"Avg(case when Value1 in ('Value2') and [DateType] in ('Value3') then LOS end)"],['bob',"isnull(Avg(case when XferToValue2 in (1) and DateType in ('Value3') and [Value1] in ('HM') then LOS end),0)"]],columns=['ReportField','OtherField'])
search1='Sum'
search2='Count'
search3='Avg'
def Agg_type(x):
if search1 in x:
return 'sum'
elif search2 in x:
return 'count'
elif search3 in x:
return 'Avg'
else:
return 'Other'
SampleDf['AggType'] = SampleDf['OtherField'].apply(Agg_type)
SampleDf.head()
Error:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-17-a2b4920246a7> in <module>()
17 return 'Other'
18
---> 19 SampleDf['AggType'] = SampleDf['OtherField'].apply(Agg_type)
20
21 #SampleDf.head()
C:\Users\Name\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\series.py in apply(self, func, convert_dtype, args, **kwds)
2292 else:
2293 values = self.asobject
-> 2294 mapped = lib.map_infer(values, f, convert=convert_dtype)
2295
2296 if len(mapped) and isinstance(mapped[0], Series):
pandas\src\inference.pyx in pandas.lib.map_infer (pandas\lib.c:66124)()
<ipython-input-17-a2b4920246a7> in Agg_type(x)
8
9 def Agg_type(x):
---> 10 if search1 in x:
11 return 'sum'
12 elif search2 in x:
TypeError: argument of type 'float' is not iterable
Ich kann Ihren Fehler mit diesen Daten nicht reproduzieren, aber ich kann, wenn ich über die '['OtherField']' Spalte mit einer Liste von Gleitkommazahlen schreibe, Ihre Funktion sieht gut aus - das Problem scheint mit dem Dtype Ihres 'zu sein ['OtherField'] 'spalte – cmaher
ist es okey, wenn ich eine lösung anbiete, die funktioniert b ut das unterscheidet sich von dir? einfach, weil Ihr Code für mich auch keinen Fehler ausgelöst hat –
@RayhaneMama Vielen Dank für die Rückmeldung an mich, ja, bitte geben Sie Ihre Lösung. – ndderwerdo