Ich habe gelesen link auf "Rückgabe einer Ansicht gegen eine Kopie". Ich verstehe nicht wirklich, wie die verkettete Zuordnung Konzept in Pandas funktioniert und wie die Verwendung von .ix()
, .iloc()
oder .loc()
betrifft es.Pandas: Angekettete Zuweisungen
Ich bekomme die SettingWithCopyWarning
Warnungen für die folgenden Zeilen des Codes, wo data
ein Panda Datenrahmen und amount
ist eine Spalte (Serie) Name in dem Datenrahmen:
data['amount'] = data['amount'].astype(float)
data["amount"].fillna(data.groupby("num")["amount"].transform("mean"), inplace=True)
data["amount"].fillna(mean_avg, inplace=True)
an diesem Code suchen, ist es offensichtlich, dass ich etwas suboptimales mache? Wenn ja, können Sie mir die Ersatzcodezeilen mitteilen?
Ich bin mir bewusst, der unter Warnung und denken, dass die Warnungen in meinem Fall sind Fehlalarme:
Die verkettete Zuweisung Warnungen/Ausnahmen die Benutzer einer möglicherweise ungültigen Zuordnung informieren wollen. Es kann falsche Positive geben; Situationen, in denen eine verkettete Zuweisung versehentlich gemeldet wird.
EDIT: der Code auf der ersten Kopie Warnung Fehler führt.
data['amount'] = data.apply(lambda row: function1(row,date,qty), axis=1)
data['amount'] = data['amount'].astype(float)
def function1(row,date,qty):
try:
if(row['currency'] == 'A'):
result = row[qty]
else:
rate = lookup[lookup['Date']==row[date]][row['currency'] ]
result = float(rate) * float(row[qty])
return result
except ValueError: # generic exception clause
print "The current row causes an exception:"
Danke Jeff, also sollte ich idealerweise die 'inplace' Parameter für die 2. und 3. Warnung entfernen. In Bezug auf die erste, d.h. "data ['amount'] = data ['amount']. Astype (float)", was wäre ein Ersatz, der die Kopierwarnung nicht erzeugt? – Rhubarb
Sie müssen etwas * vor * der Astype-Zuweisung tun. Kannst du mehr Code zeigen? – Jeff
sicher, ich habe den Code zu meiner Frage hinzugefügt. – Rhubarb