Ich habe einen Pandas-Datenrahmen mit zwei Spalten: x und Wert. Ich möchte alle Zeilen mit x == 10 finden, und für alle diese Zeilen den Wert = 1.000. Ich habe versucht, den Code unten, aber ich die Warnung erhalten, dassPython Pandas: wie zu verkettete Zuordnung zu vermeiden
A value is trying to be set on a copy of a slice from a DataFrame.
Ich verstehe ich dies durch die Verwendung .loc oder .ix vermeiden können, aber ich würde zuerst den Standort oder die Indizes aller Zeilen finden müssen, die treffen mein Zustand von x == 10. Gibt es einen direkteren Weg?
Danke!
import numpy as np
import pandas as pd
df=pd.DataFrame()
df['x']=np.arange(10,14)
df['value']=np.arange(200,204)
print df
df[ df['x']== 10 ]['value'] = 1000 # this doesn't work
print df
Sorry, was ist falsch mit der empfohlenen 'df.loc [df ['x'] == 10, 'value'] = 1000'? – EdChum
Danke, ich hatte nicht bemerkt, dass dies eine Option war. Vielleicht ist es nur ich, vielleicht liegt es daran, dass ich zu sehr an SQL gewöhnt bin und zu neu für Pandas bin, aber ich finde immer noch, dass einige in SQL banale Aufgaben in Pandas unordentlich sind und die Dokumentation nicht sehr klar ist –
Die [docs] (http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy) sind ziemlich klar und die Warnung ist da, um Ihnen zu sagen, dass das, was Sie tun, möglicherweise nicht funktioniert – EdChum